首页 > 学院 > 开发设计 > 正文

快速排序

2019-11-10 22:07:02
字体:
来源:转载
供稿:网友
#include <stdio.h> //快速排序 //快速排序法是冒泡排序法的一种改进,主要的算法思想是在待排序的n个数据中取一个数据作为基准值 //将所有记录分为三组,使第一组各数据值均小于或等于基准值,第二组做基准值的数据 //第三组各数据值均大于或等于基准值,这便实现了第一趟分割,然后再对第一组和第三组分别重复上述 //方法,依次类推,直到每组中只有一个记录为止void qusort(int s[],int start,int end){ int i,j; i=start; //将每组首个元素赋给i j=end; //将每组末尾元素赋给j s[0]=s[start]; //设置基准值 while(i<j) { while(i<j&&s[0]<s[j]) j--; //位置左移 if(i<j) { s[i]=s[j]; //将小于或等于基准值的s[j]放到s[i]的位置上 i++; //位置右移 } while(i<j&&s[i]<=s[0]) i++; //位置右移 if(i<j) { s[j]=s[i]; //将大于或等于基准值的s[i]放到s[j]位置 j--; //位置左移 } } s[i]=s[0]; //将基准放入指定位置 if(start<i) qusort(s,start,j-1); //将分割出的部分递归调用qusort函数 if(i<end) qusort(s,j+1,end);}void main(){ int a[11],i; PRintf("请输入10个数:/n"); for(i=1;i<=10;i++) scanf("%d",&a[i]); qusort(a,1,10); //调用函数进行排序 printf("排序后的顺序是:/n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("/n");}

end MrBread 2017-02-06


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表