[java]排序分類--及選擇排序、插入排序、冒泡排序、快速排序的解釋圖和代碼


選擇排序:


[java] view plaincopy
  1. <span style="font-size:18px;">/** 
  2.      * 選擇排序 
  3.      */  
  4.     private static int[] insertArray(int[] a){  
  5.         for(int i=0;i<=a.length-1;i++){  
  6.             for(int j=i+1;j<=a.length-1;j++){  
  7.                 if(a[i]>a[j]){  
  8.                     int t=a[i];  
  9.                     a[i]=a[j];  
  10.                     a[j]=t;  
  11.                 }                 
  12.             }             
  13.         }  
  14.         return a;  
  15.     }   </span>  



插入排序:


[java] view plaincopy
  1. <span style="font-size:18px;">/** 
  2.      * 插入排序 
  3.      */  
  4.     private static int[] insertArray(int[] a){  
  5.         int i,j,t;  
  6.         for(i=1;i<=a.length-1;i++){  
  7.             t=a[i];  
  8.             for(j=i-1;j>=0 && t<a[j];j--){  
  9.                 a[j+1]=a[j];  
  10.             }  
  11.             a[j+1]=t;  
  12.         }  
  13.         return a;  
  14.     }   </span>  
[java] view plaincopy
  1. <span style="font-size:18px;">  
  2. </span>  
[java] view plaincopy
  1. <span style="font-size:18px;">  
  2. </span>  
冒泡排序:

[java] view plaincopy
  1. <span style="font-size:18px;">/** 
  2.      * 冒泡排序 
  3.      */  
  4.     private static int[] insertArray(int[] a){  
  5.         for(int i=0;i<a.length-1;i++){  
  6.             for(int j=0;j<a.length-1-i;j++){  
  7.                 if(a[j]>a[j+1]){  
  8.                     int t=a[j];  
  9.                     a[j]=a[j+1];  
  10.                     a[j+1]=t;  
  11.                 }  
  12.             }  
  13.         }  
  14.         return a;  
  15.     }   </span>  


快速排序:


[java] view plaincopy
  1. /** 
  2.      * 交換指定數組a的兩個變量的值 
  3.      * @param a  數組 
  4.      * @param i  數組下標 
  5.      * @param j  數組下標 
  6.      */  
  7.     public static void swap(int a[],int i,int j){  
  8.         if(i==j) return;          
  9.         int tmp=a[i];  
  10.         a[i]=a[j];  
  11.         a[j]=tmp;  
  12.     }  
  13.       
  14.     /** 
  15.      *  
  16.      * @param array  待排序數組 
  17.      * @param low    數組下標下界 
  18.      * @param high   數組下標上界 
  19.      * @return 
  20.      */  
  21.     public static int partition(int array[],int low,int high){  
  22.         //當前位置爲第一個元素所在位置  
  23.         int p_pos=low;  
  24.         System.out.println("此時的p_pos爲"+p_pos);  
  25.         //採用第一個元素爲軸  
  26.         int pivot=array[p_pos];       
  27.         for(int i=low+1;i<=high;i++){  
  28.             if(array[i]<pivot){  
  29.                 p_pos++;  
  30.                 swap(array, i, p_pos);  
  31.             }             
  32.         }  
  33.         swap(array, low, p_pos);          
  34.         return p_pos;  
  35.     }  
  36.       
  37.     /** 
  38.      * 快速排序實現 
  39.      * @param array 
  40.      * @param low 
  41.      * @param high 
  42.      */  
  43.     public static void quickSort(int array[],int low,int high){  
  44.         if(low<high){  
  45.             int povit=partition(array, low, high);            
  46.             quickSort(array, low, povit-1);           
  47.             quickSort(array, povit+1, high);              
  48.         }  
  49.     } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章