冒泡排序

来源:互联网 发布:俄罗斯社交软件 编辑:程序博客网 时间:2024/06/03 22:36
     之所以叫冒泡排序,是因为排序的过程就像气泡由水底一直往水面升。
假设如下数组(A):
数组34521下标01234
     第一次排序过程:
          1、3<4:不变,结果:A={3,4,5,2,1}。
          2、4<5:不变,结果:A={3,4,5,2,1}。
          3、5>2:5与2交换位置,结果A[2]=2,A[3]=5,A={3,4,2,5,1}。
          4、5>1:5与1交换位置,结果A[3]=1,A[4]=5,A={3,4,2,1,5}。
第一次排序结果:
数组34215下标01234
     第一次排序进行了4次比较。
第二次排序结果:
数组32145下标01234
第二次排序,只需要做3次比较即可。
第三次排序结果:
数组21345下标01234
第四次排序结果:
数组12345下标01234

     算法复杂度计算:由(N-1)+(N-2)+…+1=N*(N-1)/2得出O(N*N),其中N为数组数据项。所以冒泡排序的算法复杂度:O(N*N)。      以下为Java实现:
public class BubbleSort {static int[] array;//冒泡排序public static int [] action() {int temp;//每一次循环(i)都将一个最大值放到数组最后面,下一个循环(j)将减少一次对比for (int i = array.length-1; i >1; i--) { for (int j = 0; j < i; j++) {int left = array[j];int right = array[j + 1];if (right < left) {temp = right;array[j+1] = left;array[j] = temp;}}}return array;}public static void main(String[] args) {array=new int []{40,5,1,7,10,3,9,12,40};int [] result=action();for (int  string : result) {System.out.println(string);}}}


0 0
原创粉丝点击