常见算法总结
持续更新中。。。
快速排序:以第一个元素为根元素,第一趟排序目标是在19前面的元素都比19小,在19后面的都比19大。
19 (20 35 22 13 41 27 45 37) 42 15 5 10
先从最后一个元素开始,将10与根元素19比较,10小,19和10互换位置,顺序如下:
10 (20 35 22 13 41 27 45 37) 42 15 5 19
这时5也比19小,如果5再和19互换,或者接着15再和19互换位置,顺序如下:
10 (20 35 22 13 41 27 45 37) 42 19 15 5
这时就违背了前面定义的排序目标:在19前面的元素都比19小,在19后面的都比19大。
void quick_sort(int arr[],int left,int right){
int i=left;
int j=right;
int temp = arr[i];
while(i<j){
while(temp<=arr[j]){
j--;
}
arr[i]=arr[j];
arr[j]=temp;
while(temp>=arr[i]){
i++;
}
if(i-1>left){
quick_sort(arr,left,i-1);
}
if(i+1<right){
quick_sort(arr,i+1,right);
}
}