求大神帮忙看看这个程序,真的编不来

cccsiqi47 2016-05-04 09:58:27
内容:
随机产生10个随机数,用线性插入、直接选择、冒泡、快速、堆等排序方法排序。
程序如下:
#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 t;
for (int 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()
{
}
...全文
109 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-05-04
  • 打赏
  • 举报
回复
加个产生随机数和switch的就行

#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);
}

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧