冒泡排序
算法描述
两两比较两个元素的大小,如果两个元素的顺序相反则交换位置,每一轮扫描都会将最小元素的放到最前面(或者最大的元素放到最后面)。
算法步骤
(1)比较相邻的元素,如果第一个比第二个大,则交换它们的顺序。
(2)从开始第一对到结尾最后一对重复执行步骤1。会将最大的元素放到最后一个位置
(3)针对所有的元素重复上述步骤,最后一个位置已定不需要操作。
(4)持续每次对越来越小的序列执行上述操作。
算法实现Java
package algorithm.sort;
/**
* @author kaichen
* */
public class Bubble {
public static void sort(int[] arr){
int n = arr.length;
for(int i = 0; i < n; i++){
for(int j = 0; j < n-i-1; j++){
if(arr[j] > arr[j+1]){
swap(arr, j, j+1);
}
}
}
}
private static void swap(int[] arr, int min, int i) {
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
算法的时间复杂度
最好,最坏,平均时间复杂度为O(n^2)。
稳定性
稳定排序