📄 快速排序.cpp
字号:
#include<stdio.h>
#define MAX 50
/*建立待排序数据表,输出数据表内容*/
void InputData(int list[],int n)
{
printf("输入数字:\n");
for(int i=0;i<n;i++)
scanf("%d",&list[i]);
}
void OutputData(int list[],int n)
{
printf("\n每趟排序的划分结果:\n");
for(int k=0;k<n;k++)
printf("%3d",list[k]);
printf("\n");
}
/*使用快速排序对数据进行排序*/
void QuickSort(int list[],int law,int high)
{
int i=law;
int j=high;//设置左右指针
int temp;
int value=list[law];//取得最左边的元素
if(law<high)
{
do
{
while(i<=high&&list[i]<=value)i++;//从左向右找比支点大的值
while(j>law&&list[j]>=value)j--;//从右向左找比支点小的值
if(i<j)//交换list[i]和list[j]的值
{
temp=list[i];
list[i]=list[j];
list[j]=temp;
}
}while(i<j);//交换list[law]和list[j]的值
temp=list[law];
list[law]=list[j];
list[j]=temp;
OutputData(list,7);//将每趟排序结果输出
QuickSort(list,law,j-1);
QuickSort(list,j+1,high);
}
}
void main()//主函数
{
int num;
int list[MAX];
printf("输入数字的个数(n<50):\n");
scanf("%d",&num);
InputData(list,num);
QuickSort(list,0,num-1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -