10个数比大小(排序) |
您所在的位置:网站首页 › java输入三个数字比大小的函数 › 10个数比大小(排序) |
10个数比大小(排序)——冒泡和选择
一. 冒泡法(起泡法) 冒泡排序的基本概念是(以升序排序为例): 依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 2.代码 #include int main() { void comp(int a[]);//声明函数 int a[10]; printf("please input 10 numbers:");//输入 for (int i = 0; i < 10; i++) { scanf_s("%d", &a[i]); } comp(a);//调用函数 printf("The right number:");//输出 for (int i = 0; i < 10; i++) { printf("%3d", a[i]); } return 0; } void comp(int a[])//定义函数 { int i, j, k; for ( i = 0; i < 9; i++) { for (j = 0; j < 9 - i; j++) { if (a[j]>a[j+1]) { k = a[j]; a[j] = a[j + 1]; a[j + 1] = k; } } } }3.运行结果 1.选择排序(从小到大)的基本思想是, 首先,选出最小的数,放在第一个位置; 然后,选出第二小的数,放在第二个位置; 以此类推,直到所有的数从小到大排序。 —————————————————————— 下面,以对 3 2 4 1 进行选择排序说明排序过程,使用comp(定义的函数) 记录当前最小的数所在的位置。 第1轮 排序过程 (寻找第1小的数所在的位置) 3 2 4 1(最初, comp=1) 3 2 4 1(3 > 2, 所以comp=2) 3 2 4 1(2 < 4, 所以 comp=2) 3 2 4 1(2 > 1, 所以 comp=1, 这时候确定了第1小的数在位置4) 1 2 4 3 (第1轮结果,将3和1交换,也就是位置1和位置4交换) 第2轮 排序过程 (寻找第2小的数所在的位置) 1 2 4 3(第1轮结果, comp=2,只需要从位置2开始寻找) 1 2 4 3(4 > 2, 所以comp=2) 1 2 4 3(3 > 2, 所以 comp=2) 1 2 4 3(第2轮结果,因为comp位置刚好在第2个位置,无需交换) 第3轮 排序过程 (寻找第3小的数所在的位置) 1 2 4 3(第2轮结果, comp=3,只需要从位置2开始寻找) 1 2 4 3(4 > 3, 所以comp=3) 1 2 3 4(第3轮结果,将3和4交换,也就是位置4和位置3交换) 至此,排序完毕。(文字部分有转载 有所修改) 2.代码 #include int main() { void comp(int a[]);//声明函数 int a[10]; printf("please input 10 numbers:");//输入 for (int i = 0; i < 10; i++) { scanf_s("%d", &a[i]); } comp(a);//调用 printf("The right number:");//输出 for (int i = 0; i < 10; i++) { printf("%3d", a[i]); } return 0; } void comp(int a[])//定义 { int i, j, k, t; for (i = 0; i < 9; i++) { k = i; for (j = i + 1; j < 10; j++) { if (a[j] < a[k]) { k=j ; } }t = a[k]; a[k] = a[i]; a[i] = t; } }3.运行结果 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |