Java中併發排序和排序的區別,快速排序 和桶排序 的區別

時間 2021-07-12 17:31:24

1樓:育知同創教育

氣泡排序(bubblesort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:

首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。

在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過程,直至最終完成排序。

public class paixu ;

int i = 0;

int j = 0;

int n = 0;

for(i= 0;ia[j+1])}}

for ( i = 0; i < a.length; i++) }}

直接選擇排序(straight select sorting) 也是一種簡單的排序方法,它的基本思想是:第一次從r[0]~r[n-1]中選取最小值,與r[0]交換,第二次從r~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次,得到一個按排序碼從小到大排列的有序序列.

public class paixu ;

int i = 0;

int j = 0;

int n = 0;

for(i= 0;ia[j])}}

for ( i = 0; i < a.length; i++) }}

2樓:匿名使用者

前者是後者的其中一種方法

快速排序 和桶排序 的區別

3樓:育知同創教育

快速排序 和桶排序 的區別:

雖然表面上看起來兩者很像,桶排序是把資料分到若干個桶裡,再遞專歸地對每一個桶進屬行排序;上述方法一是把(除了arr[piv]以外的)資料分到前後兩個“桶”裡,再遞迴地分別進行排序。但是桶排序在把資料分桶的時候,並不是使用資料本身兩兩比較的方法,而是讀取資料某一位上的值再兩兩比較。這就使得桶排序的遞迴深度可以是常數,而不像上述快排方法一,遞迴深度和資料量 n 有關。

桶排序並不屬於比較排序,也就是說它用到了快速排序、歸併排序等這些排序方法所無法獲取的資訊。(但是你可以用比較排序的方式來實現桶排序。)如果桶排序永遠只使用兩個桶,它與快排的效率是一樣的。

但是桶排序可以使用更多(但是有限)的桶,因為我們事先已經知道資料的範圍,因而知道可以用多少個桶來裝。比如我們知道資料取值是0-99,就可以放心建立10個桶,按照十位上的數字(0到9)將資料分到每個桶裡,而不用擔心出現資料100時沒有對應的桶。但是快排假設我們不知道資料的範圍,因此只能把資料按照“比arr[piv]大還是小”分成兩個桶。

1編寫氣泡排序和選擇排序的程式,主函式中編寫選單呼叫排序函式。C語言

c語言示例 如下 include define n 10 氣泡排序 升序 void bubble sort int a,int n 選擇排序演算法,按從小到大順序 void select sort int array,int n 如果最小元素的下標不是後面n i 1的未排序序列的第一個元素,則需要交...

關於c 中map的排序問題

嗯。頂樓上兩位的發言。我也說一下愚見 如果你只是想要簡單的排序,那麼多了。鍊表本身的 sort 通用庫的通用演算法 sort 還有優先佇列等。都是有排序功能的。如果你非得要用 map 鍵值對,那麼我就不明白了,為什麼是要拿 value 排序?如果真的是要先用 map 存資料,然後想 按照 value...

資料結構中幾種常見內部排序方法的比較

文庫精選 內容來自使用者 cngdzjl 資料結構各種排序方法的綜合比較 結論 排序方法 平均時間 最壞時間 輔助儲存 簡單排序 o n2 o n2 o 1 快速排序 o nlogn o n2 o logn 堆排序 o nlogn o nlogn o 1 歸併排序 o nlogn o nlogn o...