C 排序1(氣泡排序 直接排序 快速排序)

2022-04-12 01:02:40 字數 1981 閱讀 2128

氣泡排序:就是兩個兩個的這個比較好理解,**也比較好寫出來。

它的原理就是相鄰的兩個兩個的比較,如果前面的數比後面的大,那麼交換,它這個在比較完一次的時候可以得到最大的乙個數,然後接著迴圈,每次外迴圈中內迴圈的次數比原來少一次。

下面是c#**

氣泡排序

1

#region 氣泡排序

2///

3///

氣泡排序

4///

5///

6///

7public list bubblesort(listlist)819

}20}21

return

list;22}

23#endregion

直接排序原理是,讓第乙個元素和之後的每乙個元素相互比較,如果大就交換,每次可以讓第乙個元素為最小值,如圖:

**:直接排序

#region 直接排序

//////直接排序

/// ///

public

void selectionsort(listlist)}}

}#endregion

快速排序:貌似效率是最高的,在c#中的類庫排序就是用的它:

它的原理是:有兩個指標left和right  left預設先指向  最左邊的元素 right預設指向最右邊的元素,然後把指標為left的元素定義為標準,實現在標準左邊的元素比標準小,右邊的元素比標準大,然後經過遞迴不斷的建立標準 ,而實現排序

下面是我的一些理解:

比如要排序的陣列是  643581這些數,黃色代表left指標;紅色代表right指標;藍色表示left和right重合

開始:left指向第乙個元素,right指向最後乙個元素 

第1次:left指標和left+1比較,6>4,left指標向右移動,right不變;left的值和left+1的值互換

第2次:left指標和left+1比較,6>3,left指標向右移動,right不變;left的值和left+1的值互換

第3次:left指標和left+1比較,6>5,left指標向右移動,right不變;left的值和left+1的值互換

第4次:left指標和left+1比較,6<8,left指標不動,right向左移動;right的值和left+1的值互換

第5次:left指標和left+1比較,6>1,left指標向右移動,right不變;left的值和left+1的值互換;

發現left和right重合 ,實現6左邊的比6小,6右邊的比6大。然後重新定義

left=原來的left;right=left-1

left=left+1 與right=原來的right 接著進行下次遍歷

下面是c#**:

快速排序

#region 快速排序

//////快速排序

/// ///

//////

public

void quicksort(list list, int left, int

right)

}//////

把列表按照list[left]分到左右兩邊

/// ///

//////

///private

int division(list list, int left, int

right)

else

console.writeline(

string.join(","

, list));

}console.writeline(

"--------------\n");

return

left;

}#endregion

這段c#**在每次迴圈的時候都列印出來這次的值,如圖:

Java基礎 氣泡排序 快速排序和直接排序。

建立顯示類,提供顯示方法。class showfonction public void show int arrs 氣泡排序 class sortfonctionbubble extends temp 快速排序 class srotfonctionfast extends temp if index...

(1)排序之氣泡排序

氣泡排序是一種交換排序。什麼是交換排序呢?交換排序 兩兩比較待排序的關鍵字,並交換不滿足次序要求的那對數,直到整個表都滿足次序要求為止。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算...

排序 氣泡排序 快速排序

快速排序 氣泡排序就是自上向下依次對比兩個數字,若上面的數字大於下面的數字,則兩者交換,否則不交換。這樣每次迴圈結束,未排序的最大的數就到了最下面。如陣列前兩次迴圈過程如下 快速排序的核心是partition 函式,其功能如下所示 34的位置找到後,其將陣列分成兩部分,前一部分都比34小,後一部分都...