程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java 選擇排序與冒泡排序,java選擇排序冒泡

java 選擇排序與冒泡排序,java選擇排序冒泡

編輯:JAVA綜合教程

java 選擇排序與冒泡排序,java選擇排序冒泡


選擇排序與冒泡排序的特點與區別

++++++++++++++++++++++++++++++++++++++++++++++

選擇排序
這一種簡單的排序方法,它的基本思想是:
R[n]
第一次從R[0]~R[n-1]中選取最小值,與R[0]交換;
第二次從R[1]~R[n-1]中選取最小值,與R[1]交換;
....,
第i次從R[i-1]~R[n-1]中選取最小值,與R[i-1]交換;
.....,
第n-1次從R[n-2]~R[n-1]中選取最小值,與R[n-2]交換;
總共通過n-1次,得到一個按排序碼從小到大排列的有序序列.
特點
選擇排序的平均時間復雜度是O(n²)的。 
 1 for(int i = 0;i<arr.length;i++){
 2         
 3       for(int j= 1 ; j<arr.length;j++){
 4           if(arr[j-1]>arr[j]){
 5               int temp = arr[j];
 6               arr[j] = arr[j-1];
 7               arr[j-1] = temp;
 8 
 9           }
10      }
11}

 

+++++++++++++++++++++++++++++++++++++++++++++++

冒泡排序
依次比較相鄰的兩個數,將小數放在前面,大數放在後面。
即在第一趟:
  首先比較第1個和第2個數,將小數放前,大數放後;
  然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後;
  至此第一趟結束,將最大的數放到了最後。
在第二趟:
  仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後;
  一直比較到倒數第二個數(倒數第一的位置上已經是最大的);
  第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。
如此下去,重復以上過程,直至最終完成排序。
特點
冒泡排序的平均時間復雜度與插入排序相同,也是平方級的,但也是非常容易實現的算法。
 1 for(int i =0;i<arr.length-1;i++){ //從第一個開始遍歷
 2 
 3       for(int j=0;j<arr.length-1-i;j++){ //
 4 
 5           if(arr[j]>arr[j+1]){  //前面的數比後面的數大
 6              int temp = arr[j]; //然後進行交換,將大的往後排
 7              arr[j] = arr[j+1];
 8              arr[j+1] = temp;
 9           }
10      }    
11}

 

陌陌說:選擇排序(包含shaker排序/堆排序)和冒泡排序都屬於交換排序的一種。

          計算機的一些排序算法:插入排序 、冒泡排序 、選擇排序 、快速排序 、堆排序 、歸並排序、基數排序、希爾排序

    【每個排序算法都有一個 平均時間復雜度】

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved