1. 程式人生 > >氣泡排序和選擇排序

氣泡排序和選擇排序

** – **冒泡和選擇排序演算法的測試 雖然不難但在細節方面有時候會在交換位置時出錯,這一塊一定得細心。 程式碼如下:

class  Sorts
{
	public static void main(String[] args) 
	{
		long beginTime=0;
		  long endTime=0;
     int[] ar={8,9,6,2,7,3,1,74,12,36,94,55,77,61,24,76,34,22,68,69};
	 System.out.println(" 排序前:");
	 PrintArr(ar);
	 System.out.println();
	 System.out.println("氣泡排序:");
     beginTime=System.currentTimeMillis();
	 BubbleArr(ar);
	  System.out.println();
	 endTime=System.currentTimeMillis();
	 System.out.print("氣泡排序執行的時間為:"+(endTime-beginTime)+" ms");
	 System.out.println();
	 System.out.println("選擇排序");
	  beginTime=System.currentTimeMillis();
	  ChooseSort(ar);
	   System.out.println();
	  beginTime=System.currentTimeMillis();
	  System.out.print("選擇排序執行的時間為:"+(endTime-beginTime)+" ms");

	}


      //遍歷方法
    public static void PrintArr(int[] arr){
	for(int a:arr)
		System.out.print(a+" ");
	}
	//選擇排序
      public static void ChooseSort(int[] arr){
	for(int i=0;i<arr.length-1;i++){
		for(int j=i+1;j<arr.length;j++ )		
		{
              if(arr[i]>arr[j])
	     {
			 //容易錯的地方, arr[j]而不是**arr[j+1]**
				int tmp=arr[i];
				 arr[i]=arr[j];
				arr[j]=tmp;
			  }
		      }
		 }
		 //遍歷
             PrintArr(arr);
		 }
		 //冒泡方法
       public static void BubbleArr(int[] arr){
	 for(int i=0;i<arr.length-1;i++){
	 for(int j=0;j<arr.length-1-i;j++){
	   if(arr[j]>arr[j+1])
	   {   
		   //交換資料 這裡需要注意細節容易出錯*
	     int tmp=arr[j];
		 arr[j]=arr[j+1];
		 arr[j+1]=tmp;  
	   }
	 }	 
	 }
	 //遍歷陣列
	 PrintArr(arr);
	 }
}

時間上看不出來效率 應該是資料不夠大的原因。