快速排序
来源:互联网 发布:sql 添加合计行 编辑:程序博客网 时间:2024/05/17 04:40
快速排序也叫做分化交换排序,是交换排序的一种。它采用一种叫做分治的策略。
步骤为:
1.从数列中挑选一个元素,称为“基准”;
2.重新排序,所有比基准小的元素排到基准前面,比基准大的元素排到基准后面;
3.递归。
快速排序是不稳定的。
#include <stdio.h>
#include <stdlib.h>
int partition(int *array,int i,int j)
{
int temp=*(array+i);
while(i<j)
{
while(i<j && *(array+j)>=temp)
{
j--;
}
if(i<j)
{
*(array+i)=*(array+j);
i++;
}
while(i<j && *(array+i)<=temp)
{
i++;
}
if(i<j)
{
*(array+j)=*(array+i);
j--;
}
}
*(array+i)=temp;
return i;
}
void quicksort(int *array,int low,int high)
{
int mid;
if(low < high)
{
mid=partition(array,low,high);
quicksort(array,low,mid-1);
quicksort(array,mid+1,high);
}
}
void main()
{
int i,n;
int array[255];
printf("请输入数据个数:");
scanf("%d",&n);
if(n<=0 || n>255)
{
printf("n is not correct!\n");
exit(1);
}
printf("请一次输入待排序的数据");
for(i=1;i<=n;i++)
{
scanf("%d",&array[i]);
}
printf("\n待排序的数组为:\n");
for(i=1;i<=n;i++)
{
printf("%d ",array[i]);
}
quicksort(array,1,n);
printf("排序后的数组为:\n");
for(i=1;i<=n;i++)
{
printf("%d ",array[i]);
}
}
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- WM_ERASEBKGND和WM_PAINT的深刻理解 .
- linux装在虚拟机上,如何进入文字界面
- easyUI 绑定右键菜单在数据行上显示
- 朱江洪功成身退 "朱董配"解体谁主格力(图)
- 传腾讯人事大地震 马化腾将重整公司架构
- 快速排序
- VC调试入门(学习)
- 传苹果新iPhone显示屏4英寸 可视面积扩大30%
- java学习第一天
- Android横竖屏切换小结
- 安装glibc库
- Android PNG渐变背景图片失真问题
- 中国联通被指乱扣费 返还金额限制用
- safari css visual effects guide 之3d transforms