美文网首页
基本排序算法

基本排序算法

作者: shuixingge | 来源:发表于2016-09-17 12:10 被阅读18次

    冒泡算法

    public void BubbleSort(int[] array){
      if(array==null||array.length==0)
                return;
      boolean flag=true;
      for(int i=0;i<array.length&&flag;i++){
                 flag=false;
           for(int j=array.length-2;j>=i;j--){
                   if(array[j]>array[j+1]){
                          Swap(array[j],array[j+1]);
                          flag=true;      
                   } 
          }
      }
    }
    

    简单选择排序

    public void SelectSort(int [] array){
        if(array==null&&array.length==0)
                return;
        for(int i=0;i<array.length;i++){
            for(int j=i+1;j<array.length;j++){
                     int min=i;
                     if(array[j]<array[min]){
                           min=j;
                    }
           }
                  if(i!=min)
                  Swap(min, i);
       }
      
    }
    
    堆排序
    public void HeapSort(int[] array){
          if(array==null||array.length==0)
                 return;
          for(int i=array.length/2-1;i>=0;i--){
               HeapJust(array, i, array.length-1);
          }
          for(int i=array.length-1;i>=0;i--){
                  Swap(array, 0,i );
                  HeapJust(array, 0, i-1);
          }
    }
    public void HeapJust(int[] array,int s, int m){
            int j;
            int temp=array[s];
            for(j=2*s; j<=m; j=2*j){
              if(j<m&&array[j]>array[j+1])
                    j++;
              if(temp>array[j])
                   break;
              array[s]=array[j];
              s=j;
         }
             array[s]=temp;
    }
    

    快排

    public void  QuickSort(int[] array){
          QSort(array,0,array.length-1);
    }
    public void QSort(int[] array,int low,int high){
           int pivot;
           if(low<high){
                 pivot=Partion(array,low,high);
                 QSort(array,low, pivot-1);
                 QSort(array,pivot+1,high);
           }
    }
    public int  Partion(int array, int low,int high){
          int pivotKey=array[0];
          while(low<high){
                  while(low<high&&array[high]>=pivotkey)
                       high--;
                  swap(array,low,high);
                  while(low<high&&array[low]<=pivotkey)
                           low++
                  swap(array,low,high);
          }
         return low;
    }
    

    归并排序

     public void MergeSort(int [] array ){
             if(array==null||array.length==0)
                   return;
             MSort(array, temp,0, array.length);
              
     }
    
    时间复杂度

    相关文章

      网友评论

          本文标题:基本排序算法

          本文链接:https://www.haomeiwen.com/subject/ecpiettx.html