选择排序
package day07; public class try_1 { public static void main(String[] args) { int array[] = new int[]{12,14,2365,57,79,35}; int x; int y; int i; int temp; for(x=0;x<array.length-1;x++) { for(y=x+1;y<array.length;y++) { if(array[y]<array[x]) { temp=array[y]; array[y]=array[x]; array[x]=temp; } } } for(i=0;i<array.length;i++) { System.err.print(array[i]+" "); } } }
12 14 35 57 79 2365
从选择排序的思想或者是上面的代码中,我们都不难看出,寻找最小的元素需要一个循环的过程,而排序又是需要一个循环的过程。因此显而易见,这个算法的时间复杂度也是O(n*n)的。这就意味值在n比较小的情况下,算法可以保证一定的速度,当n足够大时,算法的效率会降低。并且随着n的增大,算法的时间增长很快。因此使用时需要特别注意。
选择最大或者最小的那个,与前面按顺序排好的后面一位交换位置。时间复杂度为o(n2),空间复杂度为o(1),是不稳定排序
冒泡排序
for(x=0;x<array.length-1;x++) { for(y=0;y<array.length-1-x;y++) { if(array[y]>array[y+1]) {temp=array[y]; array[y]=array[y+1]; array[y+1]=temp; }} }
大的往后沉,逐轮比较元素递减。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端。是稳定排序,最好的情况时间复杂度为o(n)最坏的情况时间复杂度为o(n2).
用Arrays.sort()函数进行排序也是非常快的,一般在开发的时候就不用再自己写排序函数,用java给封装好的函数就可以
原文:http://www.cnblogs.com/mmlovejj/p/5022359.html