| 
                         3、插入排序 
  
每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。 
- public class InsertionSort { 
 -  
 - public static void main(String a[]){ 
 -  
 - int[] arr1 = {10,34,2,56,7,67,88,42}; 
 -  
 - int[] arr2 = doInsertionSort(arr1); 
 -  
 - for(int i:arr2){ 
 -  
 - System.out.print(i); 
 -  
 - System.out.print(", "); 
 -  
 - } 
 -  
 - } 
 -  
 - public static int[] doInsertionSort(int[] input){ 
 -  
 - int temp; 
 -  
 - for (int i = 1; i < input.length; i++) { 
 -  
 - for(int j = i ; j > 0 ; j--){ 
 -  
 - if(input[j] < input[j-1]){ 
 -  
 - temp = input[j]; 
 -  
 - input[j] = input[j-1]; 
 -  
 - input[j-1] = temp; 
 -  
 - } 
 -  
 - } 
 -  
 - } 
 -  
 - return input; 
 -  
 - } 
 -  
 - } 
 
  
4、快速排序 
  
将原问题分解为若干个规模更小,但结构与原问题相似的子问题,递归地解这些子问题,然后将这些子问题的解组合为原问题的解。 
- public class QuickSort { 
 -  
 -     private int array[]; 
 -     private int length; 
 -  
 -     public void sort(int[] inputArr) { 
 -  
 -         if (inputArr == null || inputArr.length == 0) { 
 -             return; 
 -         } 
 -         this.array = inputArr; 
 -         length = inputArr.length; 
 -         quickSort(0, length - 1); 
 -     } 
 -  
 -     private void quickSort(int lowerIndex, int higherIndex) { 
 -  
 -         int i = lowerIndex; 
 -         int j = higherIndex; 
 -         // calculate pivot number, I am taking pivot as middle index number 
 -         int pivot = array[lowerIndex+(higherIndex-lowerIndex)/2]; 
 -         // Divide into two arrays 
 -         while (i <= j) { 
 -             /** 
 -              * In each iteration, we will identify a number from left side which  
 -              * is greater then the pivot value, and also we will identify a number  
 -              * from right side which is less then the pivot value. Once the search  
 -              * is done, then we exchange both numbers. 
 -              */ 
 -             while (array[i] < pivot) { 
 -                 i++; 
 -             } 
 -             while (array[j] > pivot) { 
 -                 j--; 
 -             } 
 -             if (i <= j) { 
 -                 exchangeNumbers(i, j); 
 -                 //move index to next position on both sides 
 -                 i++; 
 -                 j--; 
 -             } 
 -         } 
 -         // call quickSort() method recursively 
 -         if (lowerIndex < j) 
 -             quickSort(lowerIndex, j); 
 -         if (i < higherIndex) 
 -             quickSort(i, higherIndex); 
 -     } 
 -  
 -     private void exchangeNumbers(int i, int j) { 
 -         int temp = array[i]; 
 -         array[i] = array[j]; 
 -         array[j] = temp; 
 -     } 
 -  
 -     public static void main(String a[]){ 
 -  
 -         MyQuickSort sorter = new MyQuickSort(); 
 -         int[] input = {24,2,45,20,56,75,2,56,99,53,12}; 
 -         sorter.sort(input); 
 -         for(int i:input){ 
 -             System.out.print(i); 
 -             System.out.print(" "); 
 -         } 
 -     } 
 - } 
 
                          (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |