//代码的递归部分参考:http://blog.csdn.net/feixiaoxing/article/details/6845132
1 //排序主函數
2 #include <stdio.h>3 void main()
4 {
5 int ss[14]={5,10,13,3,1,11,4,12,7,2,0,8,9,6};
6 int i,k;
7 int length=14;
8 int step=5;
9 printf("初始值:");
10 for(i=0;i<length;i++)
11 printf("%d ",ss[i]);
12 printf("\n");
13 //Sort(ss,length,step);
14 //D_sort(ss,10);
15 //Bubble_Sort(ss,14);
16 quick_sort(ss,length);
17 printf("最後結果:");
18 for(i=0;i<length;i++)
19 printf("%d ",ss[i]);
20 printf("\n");
21 }
1 #include <stdio.h>
2 void _quick_sort(int Str[],int low,int high)
3 {
4 int k;
5 int i;
6 if(low >= high )
7 return;
8 k = Quick_Sort(Str,low,high);
9 for(i=low;i<=high;i++)
10 printf("%d ",Str[i]);
11 printf("------------ k = %d",k );
12 printf("\n");
13 _quick_sort(Str,low,k-1);
14 _quick_sort(Str,k+1,high);
15 }
1 #include <stdio.h>
2 void quick_sort(int Str[],int length)
3 {
4 if (NULL == Str || 0 == length)
5 return;
6 _quick_sort(Str,0,length-1);
7 }
1 int Quick_Sort(int Str[],int low,int high)
2 {
3 int i=low,j=high,k=low,temp;
4 while(i!=j)
5 {
6 //與尾部比較
7 while(k!=j)
8 {
9 if(Str[k]>Str[j] )
10 {
11 temp=Str[k];
12 Str[k]=Str[j];
13 Str[j]=temp;
14 k=j;
15 i++;
16 break;
17 }
18 j--;
19 }
20 //與首部比較
21 while(k!=i)
22 {
23 if(Str[i]>Str[k])
24 {
25 temp=Str[i];
26 Str[i]=Str[k];
27 Str[k]=temp;
28 k=i;
29 j++;
30 break;
31 }
32 i++;
33 }
34 }
35 return k;
36 }
Linux下gcc编译器运行
gcc -c quick_sort.c -o quick_sort.o
gcc -c _quick_sort.c -o _quick_sort.o
gcc -c Quick_Sort.c -o Quick_Sort.o
gcc -c main4.c -o main4.o
gcc -o main4 main4.o Quick_Sort.o quick_sort.o _quick_sort.o
./main4
结果:
初始值:5 10 13 3 1 11 4 12 7 2 0 8 9 6
0 2 4 3 1 5 11 12 7 13 10 8 9 6 ------------ k = 5
0 2 4 3 1 ------------ k = 0
1 2 3 4 ------------ k = 2
3 4 ------------ k = 3
6 9 7 8 10 11 13 12 ------------ k = 11
6 9 7 8 10 ------------ k = 6
8 7 9 10 ------------ k = 9
7 8 ------------ k = 8
12 13 ------------ k = 13
最後結果:0 1 2 3 4 5 6 7 8 9 10 11 12 13