选择排序

算法思想

      将待排序序列分红两部分,一部分为有序序列,另外一部分为无序序列。第一趟:从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+" ");
		}
	}

}
相关文章
相关标签/搜索