冒泡排序

发布网友 发布时间:2022-04-24 11:18

我来回答

3个回答

热心网友 时间:2022-05-02 08:22

程序已完成,看你要求的比较细,觉得冒泡排序你该没有问题,这里只是计算好位置在适当的位置加入了(和)而已,没有什么难度,故就没有添加注释,相信你很容易就看的明白的

说明:为了减少输入,我使用了随机数初始化数组,如果想自己输入数据,按代码中的注释去掉相应的语句和注释即可!

程序代码如下,供参考:
# include "stdio.h"
# include "time.h"
# include "stdlib.h"
# define N 400
void init(int a[],int n){
int i;
srand ( ( unsigned int ) time ( NULL ) );//自己输入去此句
for(i=0;i<n;i++)
//scanf("%d",&a[i]);//自己输入将此句的注释去掉
a[i]=rand()%100001;//自己输入去此句
}
void bubblesort(int a[],int n){//起泡排序
int i,j,k=1,m,num;
for(i=0;i<n-1;i++){//i用来记录比较的趟数
for(j=0;j<n-1-i;j++)//j用来记录每趟比较需比较的次数
if(a[j]>a[j+1]){
num=a[j];
a[j]=a[j+1];
a[j+1]=num;
}
printf("(");
printf("%c",32);
for(m=0;m<n;m++){
printf("%d",a[m]);
if(m==n-1-k){
printf("%c",32);
printf(")");
printf("%c",32);
}
else
printf("%c%c",32,32);
}
k++;
printf("\n\n");
}

}
void myprint(int a[],int n){
printf("(");
for(int i=0;i<n;i++){
printf("%c%c",32,32);
printf("%d",a[i]);
}
printf("%c%c)",32,32);
}
void main(){
int n;
int a[N];
printf("请输入要排序的数组的大小:");
scanf("%d",&n);
init(a,n);
printf("source:\n");
myprint(a,n);
printf("\n\nBubble Sort:\n");
bubblesort(a,n);
printf("\n\nResult:\n");
myprint(a,n);
printf("\n\n");
}
已经通过编译运行,正确!
虽然感觉不困难,可是既然你要求的如此清晰,思路该没有问题的,该自己写的!感觉你会,所以感觉对你来说5分对此题少太了点。呵呵!

热心网友 时间:2022-05-02 09:56

#include "stdio.h"
#include "conio.h"

void sort(int *p,int n)
{
int i,j,temp,m=n;
for(;n > 1;n--)
{
if(n == m)
printf("\nBubble Sort\n");
printf("(");
for(i = 0, j = 1; j < n; j++,i++)
{
if(p[i] > p[j])
{
temp = p[i];
p[i] = p[j];
p[j] = temp;

}
printf("%d ",p[i]);

}
printf(")");
for(i = n-1 ; i < m; i++)
printf("%d ",p[i]);
printf("\n");
}
}
main()
{
int i,*array,n;

scanf("%d",&n);
array = (int *)malloc(n*sizeof(int));
if(array == NULL)
{
printf("error!");
exit(1);
}

for(i = 0; i< n;i++)
scanf("%d",&array[i]);

printf("Source\n");
for(i = 0; i< n;i++)
printf("%d ",array[i]);
sort(array,n);

printf("\nResult\n");
for(i = 0; i< n;i++)
printf("%d ",array[i]);

getch();
}
输出格式导致代码太乱。。。参考下吧

热心网友 时间:2022-05-02 11:48

我怎么看着像选择法?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com