快速排序算法

1.    快速排序算法的“笼统”说法:

  找一个基准值,比这个值大的放在右边,比这个值小的放在左边,然后循环递归,直到完成整个排序。

2.    示意图:

 

  

3.    具体代码:

 1 #include <stdio.h>
 2 
 3 void quick_sort(int arr[],int arr_start,int arr_end)
 4 {
 5     if(arr_start < arr_end)
 6     {
 7         int left = arr_start;
 8         int right = arr_end;
 9         int compData = arr[left];
10 
11         while(left < right)
12         {
13             //form right to left
14             while(left < right && arr[right] > compData) right--;
15             if(left < right)
16             {
17                 arr[left] = arr[right];
18                 left ++;
19             }
20 
21             while(left < right && arr[left] < compData) left++;
22             if(left < right)
23             {
24                 arr[right] = arr[left];
25                 right --;
26             }
27 
28             arr[left] = compData;
29             quick_sort(arr,arr_start,left-1);
30             quick_sort(arr,left+1,arr_end);
31             
32         }
33 
34     }
35 }
36 
37 int main(int argc,char const *argv[])
38 {
39     int arr[] = {58,30,20,50,42,55,69};
40     int arr_length = sizeof(arr)/sizeof(int);
41     quick_sort(arr,0,arr_length-1);
42     for(int i = 0;i<arr_length;i++)
43     {
44         printf("%d ",arr[i]);
45     }
46 
47     printf("\n");
48 }

4.    结果:

 

posted on 2018-03-23 14:33  Psrion  阅读(310)  评论(0编辑  收藏  举报

导航