變數定義:
- nums:待排序陣列
注:冒泡排序如果能在內部回圈第一次執行時,使用一個bool值來表示有無需要交換的可能,也有可能把最好的復雜度降低到O(n),在這個情況,在已經排序好的數列就無交換的需要,
演算法代碼(C#):
//冒泡排序
public void BubbleSort(int[]nums)
{
int i, j, temp;
bool exchange; //交換標志
for (i = 0; i < nums.Length - 1; i++)
{
exchange = false; //本趟排序開始前,交換標志應為假
for (j = 0; j < nums.Length - 1 - i; j++)
{
if (nums[j] > nums[j + 1])
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
exchange = true; //發生了交換,故將交換標志置為真
}
}
if (!exchange) //本趟排序未發生交換,提前終止演算法
{
break;
}
}
}
演算法實作:
- 比較相鄰的元素,如果第一個比第二個大,就交換他們兩個,
- 對每一對相鄰元素做同樣的作業,從開始第一對到結尾的最后一對,在這一點,最后的元素應該會是最大的數,
- 針對所有的元素重復以上的步驟,除了最后一個,
- 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較,
最差時間復雜度 O(n2)
最優時間復雜度 O(n)
平均時間復雜度 O(n2)
相關文章:
C#排序演算法小結——騰訊云
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/75830.html
標籤:其他
下一篇:樹的存盤
