java基礎-四種排序:選擇/冒泡/直接插入/shell
阿新 • • 發佈:2018-11-21
import java.util.Arrays; /** * @Created with IntelliJ IDEA * @Description: 四種排序 * @Package: PACKAGE_NAME * @User: FLy * @Date: 2018/11/21 * @Time: 10:42 */ public class Sort { public static int[] SelectionSort(int []array1){ //選擇排序 for(int i=0;i<array1.length-1;i++){ int min=array1[i]; for(int j=i+1;j<array1.length;j++){ if(array1[j]<min){ int tmp=min; min=array1[j]; array1[j]=tmp; } } array1[i]=min; } return array1; } public static byte[] InsertSort(byte[] array2){//直接插入排序 for (int i = 1; i <array2.length ; i++) { byte tmp=array2[i]; int j; for ( j = i; j >=1 ; j--) { if(array2[j-1]>tmp){ array2[j]=array2[j-1]; }else { break; } } array2[j]=tmp; //前面的序列已經排列ok,將外面的tmp擱到空位上 } return array2; } public static void BubbleSort(long [] array3){ //氣泡排序 for(int i=0;i<array3.length-1;i++){ //後面地這個減一加不加不影響結果,但是加上少一次運算。 for(int j=0;j<array3.length-1-i;j++){ if(array3[j]>array3[j+1]){ long lg=array3[j]; array3[j]=array3[j+1]; array3[j+1]=lg; } } } System.out.println(Arrays.toString(array3)); } public static void shellSort(short [] array4,int gap){ //希爾排序 for (int i = gap; i <array4.length ; i++) { short tmp=array4[i]; int j; for ( j = i-gap; j >=0; j-=gap) { if(array4[j]>tmp){ array4[j+gap]=array4[j]; }else { break; } } array4[j+gap]=tmp; } } public static void shell(short [] array4){ int [] array=new int []{7,3,1}; for (int i = 0; i <array.length ; i++) { int gap=array[i]; shellSort(array4,gap); } System.out.println(Arrays.toString(array4)); } public static void main(String [] args){ int [] array1=new int[]{5,1,8,0,-1}; //選擇排序 System.out.println(Arrays.toString(SelectionSort(array1))); byte[] array2=new byte[]{5,1,8,0,-1};//直接插入排序 System.out.println(Arrays.toString(InsertSort(array2))); long [] array3=new long[]{5,1,8,0,-1}; //氣泡排序 BubbleSort(array3); short[] array4=new short[21]; for(int i=0;i<array4.length;i++){ array4[i]=(short)(Math.random()*100); } shell(array4); } }