首页 > 其他分享 >冒泡

冒泡

时间:2024-03-24 15:00:14浏览次数:17  
标签:判断 int num 冒泡 数组 符合 循环

void main(){
    int num[x];
    for (int i = 0; i < x - 1; i++) {
         for (int j = 0; j < x - i - 1; j++) {
            if (num[j] > num[j + 1]) {
                int temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
            }
        }
    }
}

两层循环,外层循环次数为数组元素个数-1,内层循环次数为数组元素个数-当前外层循环次数(也就是上面说的i)-1,按上面

num[j] > num[j + 1]

其实本质就是每次从头开始把相邻的两个数进行对比,大的放到最后(一轮就能把最大的放大最后),然后继续重头开始比较,但是比较次数-1(因为最后的数肯定是最大的,第二轮后倒数第二的数就是第二大的,如此类推),可以简单想象为,每一轮外循环结束后,数组中最大的数会排最后,且数组长度必定比上一次的短1。

例:

原数组:3142,即x为4,外层循环的i<3

此时i=0,符合i<3,那么需要j<3,数组为:3142

i=0,j=0;——>判断j=0,符合j<3,开始比较num[0]和num[1],也就是比较3和1,需要交换,此时数组由3142为1342,然后j++,j=1

i=0,j=1;——>判断j=1,符合j<3,比较num[1]和num[2],也就是比较3和4,不需要交换,此时数组保持为1342,然后j++,j=2

i=0,j=2;——>判断j=2,符合j<3,比较num[3]和num[4],也就是比较4和2,需要交换,此时数组由1342为1324,然后j++,j=3

i=0,j=3;——>判断j=2,不符合j<3,跳出,内循环,此时i++,i=1,数组为:1324

此时i=1,符合i<3,那么需要j<2,数组为:1324

i=1,j=0;——>判断j=0,符合j<2,开始比较num[0]和num[1],也就是比较1和3,不需要交换,此时数组保持为1324,然后j++,j=1

i=1,j=1;——>判断j=1,符合j<2,开始比较num[1]和num[2],也就是比较3和2,需要交换,此时数组由1342为1234,然后j++,j=2

i=1,j=2;——>判断j=2,不符合j<2,跳出,内循环,此时i++,i=2,数组为:1234

此时i=2,符合i<3,那么需要j<1,数组为:1234

i=2,j=0;——>判断j=0,符合j<1,开始比较num[0]和num[1],也就是比较1和2,不需要交换,此时数组保持为1234,然后j++,j=1

i=2,j=1;——>判断j=1,不符合j<1,跳出,内循环,此时i++,i=3,数组为:1234

此时i=3,不符合i<3,外循环结束,数组结果为:1234

标签:判断,int,num,冒泡,数组,符合,循环
From: https://www.cnblogs.com/MorningMaple/p/18092436

相关文章

  • 【算法】冒泡、选择和插入排序
    目录1.简介2.冒泡排序2.1步骤2.2C语言编码3.选择排序步骤C语言编码4.插入排序步骤C语言编码1.简介在经典排序算法中排序算法平均时间复杂度最好情况最坏情况空间复杂度排序方式稳定性冒泡排序O(n2)O{\left(n^{2......
  • Java - 冒泡排序
      //冒泡排序publicclassBubbleSort{ publicstaticvoidmain(String[]args){ //定义一个整型的数组 int[]array={64,34,25,12,22,11,90} bubbleSort(array); for(inti:array){ System.out.println(i+""); } } publicstaticvoidbubbl......
  • 冒泡排序和选择排序--C语言
    冒泡排序(升序):设计思想:每两个相邻的数进行比较,大的往后走详细过程:例:99,100,88,80,100,90,77,22,33,90第一遍:99与100比较,100大,继续向后走,100与88比较,100大,100与88交换一下位置,继续向后走100与80比较,100大,100与80交换一下位置,继续向后走100与100比较,相等,不需要......
  • 冒泡、选择排序;二维数组;函数三要素,形参实参
    冒泡排序法012max08,12,13,98,12,13,98,12,9,131318,12,98,9,121228,993第一轮从前往后两两比较,4个元素比较3次,得出最大值为13。第二轮,3个元素比较2次,最大值为12。第三轮,2个元素比较1次,最大值为9。通过简单较少的数据推导得出结论,i个元素需要比较i-1轮,第j轮需要比较i-1......
  • Python基础----冒泡排序和二分查找(持续更新中)
    冒泡排序(共3个版本)在冒泡排序中,一共有3个版本,经常使用的是v3.0,v3.0版本的精彩之处就在于b=false和b=true只要把这点搞懂,那么冒泡排序就没什么难的!!!li=[5,4,7,8,2,1]#冒泡排序的v1.0版本forjinrange(len(li)-1):foriinrange(len(li)-1):......
  • qsort函数[3]---冒泡排序与qsort函数的结合
    冒泡排序与qsort函数的结合首先给大家回顾一下冒泡排序voidbubble_sort(intarr[],intsz){ //确定趟数 inti=0; for(i=0;i<sz-1;i++) { //每趟进行两两互相比较 intj=0; for(j=0;j<sz-i-1;j++) { if(arr[j]<arr[j+1]) ......
  • C语言新手经典基础题——冒泡排序
    冒泡排序:用户输入一组数,编写程序将该组数据进行从小到大的顺序进行排列。举个例子:用户输入;1413918766这一组数据,现在要将这组数据进行从小到大的程序进行排列。我们编写程序的思路如下:现将第一个数和第二个数进行比较,即14和13,13比14小,那么就将13和14进行位置的调换,13......
  • 14_学习日志_数据结构_冒泡排序_快速排序_插入排序
    #include<编织有意义的谎言,使我相信闭上眼再睁开眼时的世界是同一个>1.介绍    从后往前或者从前往后开始两两比较元素,使得最小数上浮或者最大数下沉为冒泡排序,快速排序利用分治思想,使得基准数左边都存放相对较小数,右边存放较大数,两边再按照同样的做法重复。插入排序......
  • C语言冒泡排序
            冒泡排序是一种简单的排序算法,通过重复遍历要排序的数列,依次比较两个相邻的元素,如果它们的顺序错误则交换它们。这个过程会重复进行,直到没有相邻的元素需要交换,也就是数列已经排序完成。        冒泡排序的名字来源于其工作方式,因为较小的元素会像气......
  • 选择、冒泡、插入排序——左神数据结构算法Day1学习笔记
    时间复杂度:算法的常数操作数量级的数学表达式中,去除常数的最高阶项,比如aN²+bN+c的时间复杂度就是O(N²)。时间复杂度是数据量大到一定程度时,评价算法优劣的指标。当时间复杂度相同时,分析不同数据样本下的实际运行时间来比较算法的优劣。额外空间复杂度:在执行代码过程中申请的......