幾種常用排序演算法(bubble、select、insert、shell、未完待續)

來源:互聯網
上載者:User

標籤:import   shel   ati   color   out   ext   can   選擇   移動   

接下來兩天重新看看幾種常用的排序演算法。

1、冒泡排序法

每次從 i=0開始比較相鄰的元素,若arr[i]>arr[i+1],則交換它們。直到把最大的元素推向最後。回到 i=0,直至完成。

 1 import java.util.Scanner; 2 class bubble  3 { 4     public static void main(String[] args)  5     { 6         int n,temp; 7         int i,j; 8         int[] arr=new int[10000]; 9         Scanner scanner=new Scanner(System.in);10 11         System.out.printf("輸入n=");12         n=scanner.nextInt();13 14         System.out.printf("輸入n個數:");15         for(i=0;i<n;i++)16             arr[i]=scanner.nextInt();17 18         for(i=0;i<n;i++)19         {20            for(j=0;j<n-1-i;j++)21            {22              if(arr[j]>arr[j+1])//每次總是與相鄰的元素進行交換23              {24                 temp=arr[j];25                 arr[j]=arr[j+1];26                 arr[j+1]=temp;27              }28            }29         }30 31         for(i=0;i<n;i++)32             System.out.printf("%3d",arr[i]);33         System.out.printf("\n");34   }35 }

 

2、選擇法

從 i=0開始,把arr[i]與其後的每一個元素比較,把最小的元素放在當前位置。遞增 i,把餘下最小元素放在當前i位置,直至完成。

 1 import java.util.Scanner; 2 class select  3 { 4     public static void main(String[] args)  5     { 6         int i,j,h; 7         int[] arr=new int[10000]; 8         int temp,n; 9 10         Scanner scanner=new Scanner(System.in);11         System.out.printf("輸入n=");12         n=scanner.nextInt();13         System.out.printf("輸入n個數:");14         for(i=0;i<n;i++)15            arr[i]=scanner.nextInt();16         17         for(i=0;i<n;i++)18         {19            h=i;20            for(j=i+1;j<n;j++)21            {22               if(arr[h]>arr[j])23                   h=j;24            }25            if(i!=h)      //i!=h時才需要交換,否則i的位置即是最小的26            {27               temp=arr[i];28               arr[i]=arr[h];29               arr[h]=temp;30            }31         }32         for(i=0;i<n;i++)33           System.out.printf("%3d",arr[i]);34         System.out.printf("\n");35     }36 }

 

3、插入排序

把待排序的元素插入已排序序列的合適位置。

 1 import java.util.Scanner; 2 class insert  3 { 4     public static void main(String[] args)  5     { 6         int i,j; 7         int temp,n; 8         int[] arr=new int[10000]; 9 10         Scanner scanner=new Scanner(System.in);11         System.out.printf("輸入n=");12         n=scanner.nextInt();13         System.out.printf("輸入n個數:");14         for(i=0;i<n;i++)15             arr[i]=scanner.nextInt();16 17         for(i=0;i<n;i++)18         {19            temp=arr[i];20            for(j=i-1;j>=0 && arr[j]>temp;j--)//把當前元素arr[i]插入前面已排序的序列中。21            {22                arr[j+1]=arr[j];23            }24            arr[j+1]=temp;25         }26 27         for(i=0;i<n;i++)28           System.out.printf("%3d",arr[i]);29         System.out.printf("\n");30     }31 }

 

4、希爾排序

希爾排序通過調整步長 k 使得元素每一次移動的距離更長。步長 k 遞減,當k=1時,實際上即是插入排序法。

 1 import java.util.Scanner; 2 class shell  3 { 4     public static void main(String[] args)  5     { 6         int i,j; 7         int temp,n,k; 8         int[] arr=new int[10000]; 9 10         Scanner scanner=new Scanner(System.in);11         System.out.printf("輸入n=");12         n=scanner.nextInt();13         System.out.printf("輸入n個數:");14         for(i=0;i<n;i++)15             arr[i]=scanner.nextInt();16 17         k=n/2;18         while(k>=1)//k=1時即是插入排序19         {20            for(i=k;i<n;i+=k)21            {22               temp=arr[i];23               for(j=i-k;j>=0 && arr[j]>temp;j-=k)24               { 25                arr[j+k]=arr[j];26               }27               arr[j+k]=temp;28            }29            k/=2;//步長遞減30         }31 32         for(i=0;i<n;i++)33           System.out.printf("%3d",arr[i]);34         System.out.printf("\n");35     }36 }

 

幾種常用排序演算法(bubble、select、insert、shell、未完待續)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.