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]大還是小」分成兩個桶。

c語言中,氣泡排序和選擇排序的區別是什麼

80381誠狗 選擇排序每一趟從待排序的資料元素中選出最小 或最大 的一個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。氣泡排序 氣泡排序 bubblesort 的基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1...

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

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

cSTL中的list容器用sort排序是,如何自定義比較

1 sort函式的原型之一是 void sort iterator start,iterator end,comp cmp 其中cmp可以是自定義的函式,按照您指定的規則用於比較迭代器對應的元素的大小。那麼這裡的cmp是一個結構體 或者說類 該類定義了一個呼叫操作符 就是operator 啦 呼叫操...