原理介绍:
假设有长度为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;
}