【数据结构与算法】排序算法之冒泡排序(C++、Python)

    技术2022-07-11  116

    原理介绍:

    假设有长度为n的数组a,按照从小到大的顺序进行排序。冒泡排序的思路为:首先从数组的第一个元素开始,对数组中相邻的两个元素进行比较大小。如果左边(即索引数字小的)元素的值大于右边的元素,则交换这两个元素在数组中的位置,一直到最后一个元素为止。此时数组最右边的元素就是该数组中所有元素的最大值。然后再对该数组中剩下的n-1个元素进行这样的迭代比较,直到从小到大排好序即可。 如图所示:

    程序实现(Python):

    # 冒泡排序法 def bubbleSort(): # 小驼峰式命名法 ls = [2, 1, 8, 3, 11, 6, 18, 7, 9, 4] n = len(ls) for i in range(n, 0, -1): for j in range(i): if(ls[j]>ls[j+1]): temp =ls[j] ls[j]=ls[j+1] ls[j+1]=temp if((j+1)==i-1): break else: if ((j + 1) == i-1): break return ls t=bubbleSort() print(t)

    程序实现(C++):

    //输入一组整数存入数组,把这组数按照从小到大的顺序进行排序——冒泡排序法!!! #include<iostream> #include<iomanip> //# define N 10 const int M=10; // 定义常量, using namespace std; int main() { int i, j, flag, temp, a[M]; cout << "请输入" << M << "个整数:" << endl; for (i = 0; i < M; i++) cin >> a[i]; //对数组进行冒泡排序, flag = 1; for (i = 0; i < M - 1 && flag; i++) //第一个循环控制排多少次, { flag = 0; //设置标志位,如果有元素交换,修改其值, for(j=0;j<M-1-1;j++) //第二个循环控制每排一次时,未排好的元素之间的交换(元素越来越少)。 if (a[j] > a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; flag = 1; } } cout << "输出排序后的数组元素:" << endl; for (i = 0; i < M; i++) cout << setw(5) << a[i]; cout << endl; return 0; }

    Processed: 0.025, SQL: 9