氣泡排序:就是兩個兩個的這個比較好理解,**也比較好寫出來。
它的原理就是相鄰的兩個兩個的比較,如果前面的數比後面的大,那麼交換,它這個在比較完一次的時候可以得到最大的乙個數,然後接著迴圈,每次外迴圈中內迴圈的次數比原來少一次。
下面是c#**
氣泡排序
1直接排序原理是,讓第乙個元素和之後的每乙個元素相互比較,如果大就交換,每次可以讓第乙個元素為最小值,如圖:#region 氣泡排序
2///
3///
氣泡排序
4///
5///
6///
7public list bubblesort(listlist)819
}20}21
return
list;22}
23#endregion
**:直接排序
#region 直接排序快速排序:貌似效率是最高的,在c#中的類庫排序就是用的它://////直接排序
/// ///
public
void selectionsort(listlist)}}
}#endregion
它的原理是:有兩個指標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 快速排序這段c#**在每次迴圈的時候都列印出來這次的值,如圖://////快速排序
/// ///
//////
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
Java基礎 氣泡排序 快速排序和直接排序。
建立顯示類,提供顯示方法。class showfonction public void show int arrs 氣泡排序 class sortfonctionbubble extends temp 快速排序 class srotfonctionfast extends temp if index...
(1)排序之氣泡排序
氣泡排序是一種交換排序。什麼是交換排序呢?交換排序 兩兩比較待排序的關鍵字,並交換不滿足次序要求的那對數,直到整個表都滿足次序要求為止。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算...
排序 氣泡排序 快速排序
快速排序 氣泡排序就是自上向下依次對比兩個數字,若上面的數字大於下面的數字,則兩者交換,否則不交換。這樣每次迴圈結束,未排序的最大的數就到了最下面。如陣列前兩次迴圈過程如下 快速排序的核心是partition 函式,其功能如下所示 34的位置找到後,其將陣列分成兩部分,前一部分都比34小,後一部分都...