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