声明:本笔记基于 B站UP主「来自程序员的暴击」的 「C语言成长之路」中对应课程;
原理:从左到右依次使相邻的两个元素进行比较,将较大的元素放右边;
图解:
以上步骤完成了第一次,把极值放到最右边,到第二次循环的时候,又继续从a[0]开始重复上面的步骤,最终获得[0, 1, 2, 3, 4, 5]
求最大值代码:
1 void bubbleSort(){
2 /* 冒泡排序法求最大值 */
3 printf("please enter 10 num to test \n");
4 int a[10];
5 for (int i = 0;i < 10;i++){
6 scanf("%d",&a[i]); // 循环获取用户输入
7 }
8 for (int i = 0;i < 10 - 1;i++){
9 if(a[i] > a[i + 1]){ // 比较相邻的两个元素,把值更大的元素交换到后面
10 int temp = a[i + 1]; // 选择排序法是先设一个标杆,跟标杆去比较
11 a[i + 1] = a[i]; // 而冒泡排序法则是通过列表中两两进行比较,每次比出最大的一个,如此循环,获得最大(小)的值
12 a[i] = temp;
13 }
14 }
15 printf("a[9] = %d",a[9]); // 因为这次是求最大值,所以最后一个元素必定是最大的
16 }
求最小值代码:
1 void bubbleSort2(){
2 /* 冒泡排序法求最小值 */
3 printf("please enter 10 num to test \n");
4 int a[10];
5 for (int i =0;i < 10;i++){
6 scanf("%d",&a[i]);
7 }
8 for (int i = 0;i < 10-1;i++){
9 if(a[i] < a[i + 1]){
10 int temp = a[i + 1];
11 a[i + 1] = a[i];
12 a[i] = temp;
13 }
14 }
15 printf("a[9] = %d",a[9]);
16 }
标签:10,temp,46,++,冒泡排序,C语言,int,printf
来源: https://www.cnblogs.com/akne/p/13492423.html