【算法】【JAVA】选择排序

选择排序与冒泡排序有点相似,他们的相同点都是要对数组进行N-1次比较,不同的是,冒泡排序一次循环至多需要进行N-1次交换,而选择排序一个循环只需要进行一次交换。其算法如下:

1.对数组进行遍历,设置一个变量记录下数组中的最小元素,遍历一遍之后,将扫描到最小元素的位置与数组的第一个元素交换,交换过后数组最左边的元素自动成为最小的元素。

2.依次对剩下的元素进行遍历,第二次从数组的第二个元素,即a[1]开始遍历,因为a[0]已经是数组中最小的元素了……以此类推,最终会得到递增排序的数组。

3.选择排序与冒泡排序在N较大的情况下时间复杂度均为N*N,但选择排序进行交换的次数较少,对冒泡排序进行了一定的优化。

public class SelectSort {
	public static void main(String[] args){
		int[] array ={5,3,2,4,1};
		int x = 0;//记录最小数的位置
		for(int i =0;i<array.length;i++){
			int temp = array[i];
			for(int j =i;j<array.length;j++){
				if(array[j]<temp) {
					temp=array[j];
					x=j;
				}
			}
			array[x]=array[i];
			array[i]=temp;
		}
		for(int m =0;m<array.length;m++){
			System.out.println(array[m]);
		}
	}
}

  

posted @ 2012-09-15 16:37  Sayary  阅读(173)  评论(0)    收藏  举报