天天看點

直接插入排序---java實作

思路:周遊無序的原數組,把第i個的後一個即i+1去與前面的i個逐個比較...

解法一:

package com.sheepmu.text;

import java.util.Arrays;
  /*   
  * @author sheepmu
  */ 
public class Sort {
	 public static void main(String[] args){
		 int[] arr={64,5,7,89,6,24};
		 insertSort(arr);
		 System.out.println(Arrays.toString(arr));
	 }	 	 
	 public static void insertSort(int[] arr){
		 int len=arr.length;
		 int temp=0;
		 for(int i=0;i<len-1;i++){//要len-1,不然後面i+1要越界。
			  temp=arr[i+1];	 
			  for(int  j=i;j>=0;j--){
				  if(temp<arr[j]){
					  arr[j+1]=arr[j];
					  arr[j]=temp;
					  }
			  }
			 
		 }
	 }
}	 
       

解法二:

package com.sheepmu.text;

import java.util.Arrays;
  /*   
  * @author sheepmu
  */ 
public class Sort {
public static void main(String[] args){
int[] arr={64,5,7,89,6,24};
insertSort(arr);
System.out.println(Arrays.toString(arr));
}  
public static void insertSort(int[] arr){
int len=arr.length;
int j,temp=0;
for(int i=0;i<len-1;i++){//要len-1,不然後面i+1要越界。
 temp=arr[i+1];
 j=i;
 while(j>=0&&temp<arr[j]){
 arr[j+1]=arr[j];
  j--;
 }
 arr[j+1]=temp;//因為上面運作完了後j--咯,是以這裡是arr[j+1]=temp;而不是arr[j]=temp;
}
}
}