C语言快速排序算法(递归实现)

 1 #include<stdio.h>
 2 
 3 void quick_sort(int array[],int left,int right);
 4 void quick_sort(int array[],int left,int right)
 5 {
 6     int i =left,j = right;
 7     int temp;
 8     int pivot;
 9     
10     pivot = array[(left+right) / 2];
11     
12     while (i<=j)//结束判断条件 
13     {
14         while (array[i] <pivot)//从右向左找小于基准的元素 
15         {
16             i++;
17         }
18         while (array[j] > pivot)//从左向右找小于基准的元素
19         {
20             j--;
21         }
22         if (i <=j)//交换前提 
23         {
24             temp = array[i];
25             array[i] = array[j];
26             array[j] = temp;
27             i++;
28             j--;
29             
30         }
31     }
32     
33     if (left < j)
34     {
35         quick_sort(array,left,j);//这里的输入提供了右边新数组 
36     }
37     if (i < right)
38     {
39         quick_sort(array,i,right);//提供了左边的新数组 
40     }    
41     
42     
43 }
44 
45 int main(void)
46 {
47     int array[] = {73,108,111,101,123,2421,23,124,123,1244,23,3};
48     int i,length;
49     
50     length = sizeof(array) / sizeof(array[0]);
51     quick_sort(array,0,length-1);
52     for (i = 0;i<length;i++)
53     {
54         printf("%d ",array[i]);
55     }
56     
57     
58 }

 

上一篇:python数据分析基础视频08-python中的数据透视表df.pivot_table()


下一篇:Spark开发_Spark数据变换-透视(Pivot)