首页 > 编程语言 > 详细

排序的一些方法(快速排序)

时间:2015-04-06 15:33:52      阅读:251      评论:0      收藏:0      [点我收藏+]

1.快速排序

参考资料:http://developer.51cto.com/art/201403/430986.htm(下面的代码出于此处,作者写的很详细。)    及各种贴吧、文库......

 

  1. #include <stdio.h> 
  2. int a[101],n;//定义全局变量,这两个变量需要在子函数中使用 
  3. void quicksort(int left,int right) 
  4. { 
  5.     int i,j,t,temp; 
  6.     if(left>right) 
  7.        return; 
  8.                                 
  9.     temp=a[left]; //temp中存的就是基准数 
  10.     i=left; 
  11.     j=right; 
  12.     while(i!=j) 
  13.     { 
  14.                    //顺序很重要,要先从右边开始找 
  15.                    while(a[j]>=temp && i<j) 
  16.                             j--; 
  17.                    //再找右边的 
  18.                    while(a[i]<=temp && i<j) 
  19.                             i++; 
  20.                    //交换两个数在数组中的位置 
  21.                    if(i<j) 
  22.                    { 
  23.                             t=a[i]; 
  24.                             a[i]=a[j]; 
  25.                             a[j]=t; 
  26.                    } 
  27.     } 
  28.     //最终将基准数归位 
  29.     a[left]=a[i]; 
  30.     a[i]=temp; 
  31.                              
  32.     quicksort(left,i-1);//继续处理左边的,这里是一个递归的过程 
  33.     quicksort(i+1,right);//继续处理右边的 ,这里是一个递归的过程 
  34. } 
  35. int main() 
  36. { 
  37.     int i,j,t; 
  38.     //读入数据 
  39.     scanf("%d",&n); 
  40.     for(i=1;i<=n;i++) 
  41.                    scanf("%d",&a[i]); 
  42.     quicksort(1,n); //快速排序调用 
  43.                              
  44.     //输出排序后的结果 
  45.     for(i=1;i<=n;i++) 
  46.         printf("%d ",a[i]); 
  47.     getchar();getchar(); 
  48.     return 0; 
  49. } 

排序的一些方法(快速排序)

原文:http://www.cnblogs.com/boyiliushui/p/4395444.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!