#include<stdio.h>
#define N 4
void Swap(int a[],int c,int d){//c,d交换位置上的数值
int t;
t=a[c];
a[c]=a[d];
a[d]=t;
}
void Xuanze(int a[]){
int i,j,min,key;
for(i=0;i<N-1;i++)//j=i+1使得i<N-1
{
min=a[i];
key=i;
for(j=i+1;j<N;j++)
{
if(min>a[j])
{
min=a[j];
key=j;
}
}
if(key!=i)
Swap(a,i,key);//单一个a表示数组的地址
}
}
void Maopao(int a[]){
int i,j,t;
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)//j<N-1改进为 j<N-i-1,因为后面的有序了
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void Kuaisu(int a[],int left,int right){//i,j,left,right都是位置,a[i],a[j]是数值
if(left>=right)
{
return;
}
int i=left;
int j=right;
int key=a[left];
while(i<j)
{
while(i<j&&key<=a[j])
{
j--;
}
a[i]=a[j];
while(i<j&&key>=a[i])
{
i++;
}
a[j]=a[i];
}
a[i]=key;
Kuaisu(a,left,i-1);
Kuaisu(a,i+1,right);
}
int main()
{
int a[N],i;
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
//Xuanze(a);
//Maopao(a);
Kuaisu(a,0,N-1);
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
return 0;
}
注:N的值可以任意改变,你想给几个数排序,只要在开头处改变N的后面的值就可以了,现在是4个数从小到大排序
选择排序,冒泡排序,快速排序(从小到大)
最新推荐文章于 2022-03-04 16:24:54 发布