• 史上最详细的C语言冒泡排序算法和Python的冒泡排序


    未经同意,请勿转载!如有收货,请留一赞,不胜感激!

    同时欢迎加入我们的qq交流群:326079727

    话不多说上代码:

    c语言:

     1 void bubbing(){
     2     int init_arr[10] = {1,5,9,8,7,6,7,99,8,10};//define init the array
     3     //going to the exinternal loop,start to loop from 0
     4     int tmp;
     5     int len = sizeof(init_arr)/4;//获取数组的长度,因为c语言的每个int型占四个字节,所除以4
     6     for (int i = 0; i < len; i++) {//外层循环,从第一个数开始比较,每一轮下来,都能获取到一个最大值,然后放到数组最后面。
     7         for (int j = 0; j < len-i-1; j++) {//j的初始值为也为0,但是遍历到len-i-1时就不再遍历了,因为len-j-1后面的值是已经排好序的值。
     8             if (init_arr[j + 1] < init_arr[j]) {//开始进行判断,每一轮都通过判断相邻两个值大小,把大的放到后面。
     9                 int t = init_arr[j];
    10                 init_arr[j] = init_arr[j+1];
    11                 init_arr[j+1] = t;
    12             }
    13 
    14         }//printf("%d",init_arr[i]);
    15     }
    16     for (int k = 0; k < len-1 ; k++) {//进行打印排序好的数组
    17         printf("%d
    ",init_arr[k]);
    18     }
    19 
    20 }

     Python语言:

    def bubbing():
        list=[1,2,5,8,55,66,99,126,33,55]#定义列表,这里也可以任意定义其他数
        #外层循环走起
        #进行外层循环,这里和c语言的for循环的语法阿是不一样的,获取list的长度如此简单。
        # 外层循环,外层一共进行十轮(数组的长度),每一轮都从j=0,也就是第一个数开始内层循环,进行比较判断
        for i in range(0,len(list)):
            for j in range(0,len(list)-i-1):
                #内侧循环,每次都从第0位开始比较,一直比较到len(list)-i-1。
                # 因为len(list)-i-1后面的数值已经拍好序了,所以不用再比较
                if list[j]>list[j+1]:
                    list[j+1],list[j]=list[j],list[j+1]#python写法之骚气,不用buffer就可以进行变量值的互换。
                j+=1#内部的加一
            i+=1#每完成一轮则加一
        print(list)
    
    bubbing()

    附赠:排序动图:

  • 相关阅读:
    相似数据检测算法
    从一个简单的程序中你能看到什么?(面向对象的真帝)
    如何更好的理解类和结构
    从一个很简单的文件上传来品味面向对象的大局观(抽象类和功能类)
    网站中的缩略图是如何生成的?(C#处理图像)
    进程间通信(一)
    POSIX线程-(六)
    进程间通信(四)
    进程间通信(三)
    POSIX线程-(五)
  • 原文地址:https://www.cnblogs.com/szj666/p/11865052.html
Copyright © 2020-2023  润新知