问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用冒泡法对十个数进行排列

发布网友 发布时间:2022-08-27 17:45

我来回答

2个回答

热心网友 时间:2024-06-01 20:04

#include <stdio.h>

/*交换两个数*/
void Swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
/*输出一行十个数字*/
void Write(int array[], int begin, int end)
{
for(int i = begin; i <= end; i ++)
// cout <<array[i] << " ";
printf("%d ",array[i]);
printf("\n");
// cout << endl;
}
/*插入排序*/
void InsertionSort(int array[], int begin, int end)
{
int i, j;
int tmp;
for(i = begin+1; i <= end; i ++) /*循环几次就输出几行*/
{
tmp = array[i];
for(j = i-1; j >= begin; j --)
{
if(tmp > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
array[j + 1] = array[j];
else
break;
}
array[j+1] = tmp;
Write(array, begin, end); /*输出排序结果(一行)*/
}
}
/*选择排序*/
void SelectionSort(int array[], int begin, int end)
{
int i, j;
int position;
for(i = begin; i < end; i ++)
{
for(j = i+1, position = i; j <= end; j ++)
{
if(array[j] > array[position]) /*如果要从小到大排序,则改将'>'改为'<'*/
position = j;
}
Swap(array[i], array[position]);
Write(array, begin, end);
}
}
/*冒泡排序*/
void BubbleSort(int array[], int begin, int end)
{
int i, j;
for(i = begin; i < end; i ++)
{
for(j = begin; j <= end - begin -1; j ++)
{
if(array[j+1] > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
Swap(array[j], array[j+1]);
}
Write(array, begin, end);
}
}

/*将原始数组拷贝到要排序的数组,因为有3个排序方法,所以必须保留原始数组,以备其他调用*/
bool Copy(int array1[], int array2[], int n1, int n2)
{
if(n1 != n2)
return false;
else
{
for(int i = 0; i < n1; i ++)
{
array1[i] = array2[i];
}
return true;
}
}
/*主函数*/
void main()
{
/*如果需要输入排序的个数不是10个数,可以将3个地方的10改为你要的个数就可以了*/

int number, i; /*定义2个整型变量*/
int initinal[10], sort[10]; /*定义2个数组,第一个是保存输入的10个数,第2个是用来排序的数组*/

printf("请输入十个要排序的数字:\n");
number = 10; /*排序个数是10个*/

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

printf("从大到小插入排序:\n");
Write(initinal, 0, number-1); /*输出原始十个数据*/
Copy(sort,initinal,number, number); /*将原始数组拷贝到排序数组*/
InsertionSort(sort,0,number-1); /*调用排序函数*/

printf("从大到小选择排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
SelectionSort(sort,0,number-1);

printf("从大到小冒泡排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
BubbleSort(sort,0,number-1);
}

热心网友 时间:2024-06-01 20:04

main()
{
int i,j,t,a[10];
printf("imput 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("\nthe result is :\n");
for(j=0;j<10;j++)
printf("%d ",a[j]);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
轻度慢性萎缩性胃炎 活动期,伴轻度肠 化 胃角多发糜烂。医生说了我... 胃窦粘膜慢性轻度萎缩性炎伴轻度肠化胃窦粘膜慢性轻度萎缩性炎? 芬兰留学读研费用是多少 芬兰留学读研时间 去芬兰留学学费生活费一年要多少 芬兰留学读研费用是多少? 芬兰留学读研学费多少? 感冒好多天了,可不可以打蓝球或者其它运动出出汗啊? 感冒打喷嚏,鼻塞然后可以让自己多出出汗吗 宝宝感冒了能去游泳吗 如何使用modbus rtu扩展s7-200的i/o 办理英国学历认证需要准备哪些材料 海信电视上方“升级成功”四个字怎么取消? 大连几个211 初二学生怎样才能学好物理 这几点很关键! 如何能学好八年级物理 怎么学能提高成绩 苹果iphone4s怎么强制关机 擒敌如何培养战斗意识心得体会 包法利夫人读书心得总结5篇 省考怎么判断是县级还是乡镇? 2022国考职位怎么判断是县级还是乡镇 公务员考试省考怎么判断职位是县级还是乡镇? 一生誓言 什么意思 一生誓言 啥意思? 有没有谁能帮忙做一个古风一点点图片,像牌匾那样,上面三字“未央... 七年级语文知识点总结上册 初一语文上册各课知识点 初一人教版语文上册知识点归纳 保安个人工作计划2022大全5篇 广东高考位次对应大学(物理整理) 上大学不好好学习算不算犯罪? 大学生不刻苦学习是不是犯法的 财务部半年度工作总结 朝花夕拾好词好句摘抄及感悟 有一部古装的电视剧,大概是10年前的古装剧了吧,名字5个字左右,名字 5个字的电视剧 5个字的电视剧 最后一个字是医 找一部古装破案电视剧,名字是五个字,好像带个什么什么案 高三二轮复习适合买什么模拟卷 答高三模拟卷理综时间怎么分配,先答选择题大概用多长时间合理? 621364开头的是哪个银行的卡 怎样更改酷狗音乐的保存路径? 为什么要读书?这是我听过最好的答案 人为什么要读书? 这是我听过最好的答案!! 人为什么结婚这是我听过最好的答案 那一瞬间让你觉得人间值得?这是我听过最好的答案 人生的意义到底是什么?这是我听过的最好的答案 为什么要让孩子学音乐,这是我听过最好的答案了 我为什么要努力,这是我听过最好的答案 人为什么要结婚,这是我听过最好的答案