選擇排序

算法思想

      將待排序序列分紅兩部分,一部分爲有序序列,另外一部分爲無序序列。第一趟:從a[0]到a[n-1]中找到最小的數a[i],而後a[i]與a[0]交換,第二趟:從a[1]到a[n-1]中找到最小的數a[j],而後將a[j]與a[1]交換,第三趟:從a[2]到a[n-1]中找到最小的數a[k],而後將a[k]與a[2]交換···· java

實例分析

{5,2,6,0,3,9,1,7,4,8} 算法

第一趟:0 {2 ,6 ,5 ,3 ,9 ,1 ,7 ,4 ,8} 數組

第二趟:0, 1 {6 ,5 ,3 ,9 ,2 ,7 ,4 ,8} spa

第三趟:0, 1, 2 {5 ,3 ,9 ,6 ,7 ,4 ,8} code

······ 排序

代碼實現

package test.algorithm.FastSlowPointer;

public class SelectSort {

	/**
	 * 選擇排序
	 * @param list
	 */
	public static  void selectSort(int[] list){
		int min = 0 , temp = 0 , count1=0, count2=0;
		
		//每一輪先選出最小的元素,再判斷是否須要移動位置
		for(int i=0;i<list.length;i++){
			min = i;
			
			for(int j=i+1;j<list.length;j++){
				count1++;
				
				//與min比較,找出最小的元素
				if(list[j]<list[min]){
					min = j;
				}
			}
			
			//若是不等於,移動元素位置
			if(min!=i){
				count2++;
				temp = list[min];
				list[min] = list[i];
				list[i] = temp;
			}
			
		}
		
		System.out.println("比較"+count1+"次,移動"+count2+"次");
	}
	
	public static void main(String[] args) {
		int[] list = {5,2,6,0,3,9,1,7,4,8};
		selectSort(list);
		
		System.out.print("打印數組:");
		for(int i :list){
			System.out.print(i+" ");
		}
	}

}
相關文章
相關標籤/搜索