【算法-排序之一】冒泡排序

算法-排序之冒泡排序


若是数据按照必定的顺序进行排序,数据处理的效率将显著的提升。算法是编程的精髓,一个高效而合适的算法能极大的减小时间消耗与空间消耗,提到“合适”是由于没有哪一个算法能够在全部状况下都表现出色,一样是排序,在不一样数据规模下各类排序算法有不一样的效能表现,选择合适的解决算法的才能最大限度地提升效率。 java

1.冒泡算法BubbleSort是经常使用排序算法之一,它的核心是让大(或小)的数据像水泡同样冒到最上端,这是经过不断地比较两个相邻数据的大小,前者大于后者则交换位置来实现冒泡。 算法

以下示例: 编程

 public static int[] BubbleSort(int num[]){
  for(int i=0;i<num.length;i++){
   for(int j=1;j<num.length-i;j++){
    if(num[j-1]>num[j]){
     int temp = num[j];
     num[j] = num[j-1];
     num[j-1] = temp;
    }
   }
  }
  return num;
 }

图解以下: spa

排序一遍后变成 code

依次类推,效果犹如把最大数“冒”上去。
排序


须要注意的细节是,对于n个数据,只须要排n-1次,故控制排序遍数的i起始值为1而不是0.在每次排序中,上次排好的数不须要再进行比较,故控制每次排序结束位置变了j的上限是num-i,随着排序次数i增长,须要排序的位置越靠前。 class

2. 时间复杂度 效率

冒泡排序的主要时间消耗是比较,第一趟序比较n-1次,随后依次递减n-2....1,则总比较(n-1)+(n-2)+...+3+2+1=(n*2-n)/2,故其时间复杂度为O(n*2). im

3.空间复杂度 数据

整个排序过程须要一个temp的空间用于交换数据,故为空间复杂度为O(1).

相关文章
相关标签/搜索