冒泡排序的是最常用的排序算法,对数组内的元素进行排序
步骤:
比较相邻的元素,如果第一个比第二个大,就交换他们两个
对每一对相邻元素做同样的工作,执行完毕之后,找到第一个最大值
重复以上的步骤,每次比较次数-1,直到不需要比较
这样就显而易见了,冒泡排序可以使用嵌套循环来实现。最外面那层循环表示的是排序的总次数,循环的条件就是:元素的个数 - 1,内层的循环是每一轮需要互换的次数,循环的条件就是:元素个数 - 当前的轮数 - 1.另外需要注意的是:和之前逆置一样的道理,都需要一个变量temp来临时存储一下需要替换的元素的值,避免被覆盖,无法赋值。
用C++实现代码如下:
#include <iostream>
using namespace std;
/*
作用:是最常用的排序算法,对数组内的元素进行排序
步骤:比较相邻的元素,如果第一个比第二个大,就交换他们两个
对每一对相邻元素做同样的工作,执行完毕之后,找到第一个最大值
重复以上的步骤,每次比较次数-1,直到。不需要比较
排序的总轮数 = 元素的个数-1
每轮对比的次数 = 元素个数 - 排序轮数 - 1
*/
int main() {
//利用冒泡排序实现升序序列
int arr[] = {52,2,29,16,7,41};
//开始冒泡排序
for (int i = 0; i < size(arr)-1;i++) {
for (int j = 0; j < size(arr) - i -1;j++) {
//如果第一个数字比第二个数字大,就实现交换
if (arr[j]>arr[j+1]) {
int temp = arr[j];//临时变量存储
arr[j] = arr[j+1];
arr[j + 1] = temp;
}
}
}
//排序后的结果
for (int i = 0; i < size(arr);i++) {
cout<<arr[i]<<endl;
}
system("pause");
return 0;
}
用Java实现代码如下:
/*
* 排序的总轮数:元素的个数-1
* 每一轮交换的次数:元素个数-排序轮数-1
*/
public class Bubble {
public static void main(String[] args) {
//定义一个无序的数组
int array[] = {52,2,29,16,7,41};
for(int i = 0;i<array.length-1;i++){
for(int j = 0;j<array.length - i - 1;j++) {
if(array[j]>array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
//遍历查看结果
for(int i = 0;i<array.length;i++) {
System.out.println(array[i]);
}
}
}