33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <conio.h>
void quicksort(int a[],int l,int r) ;
void bubblesort(int arrat[], int N) ;
void insertsort(int R[], int n);
int main()
{
int array[5];
int i,j,huan;
for(i=0;i <5;i++)
scanf("%d",&array[i]);
//bubblesort(array, 5);
//quicksort(array,0,4);
insertsort(array,5);
for(j=0;j <5;j++)
printf("%d ",array[j]);
printf("\n");
getch();
return 0;
}
// 第一种:冒泡排序算法
void bubblesort(int array[], int N)
{
int i, j, huan;
for(i=0;i <N-1;i++)
{
for(j=i+1;j <N;j++)
if(array[i]>array[j])
{
huan=array[i];
array[i]=array[j];
array[j]=huan;
}
}
}
// 第二种:快速排序算法
void quicksort(int a[],int l,int r)
{
int i=l,j=r;
int temp=a[i];
while(i <j)
{
while((a[j]>temp)&&(j>i))
--j;
if(j>i)
{
a[i]=a[j];
++i;
}
while((a[i] <=temp)&&(j>i))
++i;
if(i <j)
{
a[j]=a[i];
--j;
}
}
a[i]=temp;
if(l <i-1)quicksort(a,l,i-1);
if(i+1 <r)quicksort(a,i+1,r);
}
// 第三种 直接插入排序算法
void insertsort(int R[], int n) //对顺序表R中的记录R[0..n-1]按递增序进行插入排序
{ //一开始 R0是有序区
int i, j, temp;
for(i=1; i<n; i++) //依次插入R[1],…,R[n-1]
if(R[i]<R[i-1]) //若R[i]大于等于有序区中所有的keys,则R[i]应在原有位置上
{
temp=R[i];
j=i-1; //temp是哨兵,且是R[i]的副本
do //从右向左在有序区R[1..i-1]中查找R[i]的插入位置
{
R[j+1]=R[j]; //将关键字大于R[i]的记录后移
j--;
}while(temp<R[j] && j>=0); //当R[i]≥R[j]时终止
R[j+1]=temp; //R[i]插入到正确的位置上
}
}