c语言快速排序代码

 //代码的递归部分参考: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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值