史上最详细的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()

附赠:排序动图:

原文地址:https://www.cnblogs.com/szj666/p/11865052.html