64,647
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
const int N=10;
void Bubblesort(int r[],int n)
{
int flag=1;
for (int i=1;i<n;i++)
{
flag=0;
for(int j=n-1;j>=i;j--)
if (r[j]<r[j-1])
{
int t=r[j];
r[j]=r[j-1];
r[j-1]=t;
flag=1;
}
if(flag==0) return;
}
}
int divide(int r[],int i,int j)
{
int pivotkey=r[i];
while(i<j){
while(i,j&&r[j]>=pivotkey)
j--;
r[i]=r[j];
i++;
while(i<j&&r[i]<pivotkey)
i++;
r[j]=r[i];
j--;
}
r[i]=pivotkey;
return i;
}
void quicksort(int r[],int left,int right)
{ int k;
if(left<right){
k=divide(r,left,right);
quicksort(r,left,k-1);
quicksort(r,k+1,right);
}
}
void creatheap(int r[],int i,int n)
{
int j;
int t;
t=r[i];j=2*i;
while(j<n)
{
if((j<n)&&(r[j]<r[j+1]))j++;
if(t<r[j])
{
r[i]=r[j];
i=j;j=2*i;
}
else j=n;
r[i]=t;
}
}
void heapsort(int r[],int n)
{
int i,t;
for (i=n/2;i>=0;i--)
creatheap(r,i,n);
for(i=n-1;i>=0;i--)
{
t=r[0];
r[0]=r[i];
r[i]=t;
creatheap(r,0,i-1);
}
}
void print(int r[],int n)
{
for(int i=0;i<=n-1;i++)
{
if(i%10==0){printf("\n");}
printf("%6d",r[i]);
}
printf("\n");
}
void main()
{
int r[10] = {0};
srand((unsigned)time(NULL));
for(int i = 0; i < 10;i++ )
r[i] = rand() % 50;
print(r, 10);
printf("请输入要排序的方法:[1]冒泡排序 [2]快速排序 [3]堆排序\n:");
int ch;
scanf("%d", &ch);
switch(ch)
{
case 1:
Bubblesort(r, 10);
break;
case 2:
quicksort(r, 0, 9);
break;
case 3:
heapsort(r, 10);
break;
}
printf("排序后:\n");
print(r, 10);
}