1.快速排序
快速排序是一種比較快的排序算法,其主要思想是:
具體思想不再贅述。下面給出具體代碼實現。
2.python3實現
#quick sort
#python3
#Yanglin Tu
def partition(arr, p, r):
x = arr[r]
i = p-1
for j in range(p, r):
if arr[j] <= x:
i += 1
arr[i], arr[j] = arr[j], arr[i]
arr[i+1], arr[r] = arr[r], arr[i+1]
return i+1
def quicksort(arr, p, r):
if p < r:
q = partition(arr, p, r)
quicksort(arr, p, q-1)
quicksort(arr, q+1, r)
def main():
list_a = [20, 5, 7, 1, 66, 47, 5, 18]
print(list_a)
length = len(list_a)
quicksort(list_a, 0, length-1)
print(list_a)
if __name__ == '__main__':
main()
3.C++實現
//quick sort
//C++
//Yanglin Tu
#include <iostream>
using namespace std;
void swap(int &a,int &b){
int temp;
temp = a;
a = b;
b = temp;
}
int partition(int arr[],int p,int r){
int x,i;
x = arr[r];
i = p-1;
for (int j=p;j<r;j++){
if(arr[j]<=x){
int temp;
i += 1;
swap(arr[j],arr[i]);
}
}
swap(arr[i+1],arr[r]);
return i+1;
}
void quicksort(int arr[],int p,int r){
if (p<r){
int q = partition(arr,p,r);
quicksort(arr,p,q-1);
quicksort(arr,q+1,r);
}
}
int main(){
int i;
int list_a[] = {20, 5, 7, 1, 66, 47, 5, 18};
int length = sizeof(list_a) / sizeof(int);
for (i = 0; i < length; i++)
cout << list_a[i] << '\t';
cout << endl;
quicksort(list_a, 0, length - 1);
for (i = 0; i < length; i++)
cout<< list_a[i] << '\t';
cout << endl;
return 0;
}
4.快速排序的時間複雜度爲O(nlgn)