数据结构排序(插入,选择,冒泡)

package com.student.common;

public class Sort {
	
	
	
	public static void main(String[] args) {
		
		int [] number = {41,24,76,11,45,64,21,69,19,36};
    	
	   	//selectSort(number);
		//bobSort(number);
		insertSort(number);
     for(int j : number)
     System.out.println(j);
		
	}
	
	/**
	 * 选择排序
      将要排序的对象分作两部份,一个是已排序的,一个是未排序的,
    从后端未排序部份选择一个最小值,并放入前端已排序部份的最后一个,例如:
      [1] 80 31 37 10 70 48 60 33 80 选出最小值1 
      [1 10] 31 37 80 70 48 60 33 80 选出最小值10 
      [1 10 31] 37 80 70 48 60 33 80 选出最小值31 
      [1 10 31 33 37] 70 48 60 80 80 ...... 
      [1 10 31 33 37 48] 70 60 80 80 ...... 
      [1 10 31 33 37 48 60] 70 80 80 ...... 
      [1 10 31 33 37 48 60 70] 80 80 ...... 
      [1 10 31 33 37 48 60 70 80] 80 ...... 

	 * @param number
	 */
	public static void selectSort(int [] number)
	{
		for(int i=0;i<number.length;i++)
		{
			
			for(int j=i+1;j<number.length;j++)
				if(number[j] <number[i])
					swap(number,i,j);
						
		}
	}
	
	
	/**
	 * 插入排序像是玩朴克一样,我们将牌分作两堆,每次从后面一堆的牌抽出最前端的牌,然后插入前面一堆牌的适当位置,
例如:
      [77 92] 67 8 6 84 55 85 43 67 将77插入92前 
      [67 77 92] 8 6 84 55 85 43 67 将67插入77前 
      [8 67 77 92] 6 84 55 85 43 67 将8插入67前 
      [6 8 67 77 92] 84 55 85 43 67 将6插入8前 
      [6 8 67 77 84 92] 55 85 43 67 将84插入92前 
      [6 8 55 67 77 84 92] 85 43 67 将55插入67前 
      [6 8 55 67 77 84 85 92] 43 67 ...... 
      [6 8 43 55 67 77 84 85 92] 67 ...... 
      [6 8 43 55 67 67 77 84 85 92] ...... 
	 * @param number
	 */
	public static void insertSort(int [] number)
	{
	  for(int j=1;j<number.length;j++)
	  {
		//选择一个数
		  int temp = number[j];
		  
		  int i= j-1;
		  while(temp < number[i])
		  { 
			  //数据往后移
			  number[i+1] = number[i];
			  i--;
			  if(i==-1) break;
		  }
		  number[i+1] = temp;
		                  
	  }	                  
		
	}
	/**
	 * 冒泡排序
	 * @param number
	 */
	public static void bobSort(int [] number)
	{
		for(int i=0;i<number.length;i++)
		{
			for(int j=0;j<number.length-i-1;j++)
				if(number[j] > number[j+1])
					swap(number, j+1, j);
		}
	}

	
	private static void swap(int[] number, int i, int j) {   
		 int t;
		 t = number[i];   
		 number[i] = number[j];
		 number[j] = t;    
	}
}
posted @ 2010-05-21 14:55  phpzxh  阅读(306)  评论(0编辑  收藏  举报