排序演算法C 實現之選擇排序詳解

2021-10-01 22:49:27 字數 1327 閱讀 3692

將無序陣列變為有序陣列

通過迴圈,每次選出在當前的剩餘元素中最小的元素,使得這些選出的元素構成有序陣列

using system;

namespace selectionsort

program ps = new program();

ps.selectsort(a);

console.writeline("排序結果:");

foreach (int a in a)

bool issorted = true;

for (int i = 0; i < a.length-1; i++)

}console.write(issorted);

console.readkey();

}public void selectsort(int a)

}if (index != i)//交換位置}}

【元素已經有序或接近有序】例如,對a=和a=,因為每次要選出最小的元素,所以不可避免地要將剩餘的所有元素比較一次。選擇排序在這種情況下,仍要較長的執行過程。

【元素完全逆序或混亂】例如,對a=,同上,選出最小元素時不可避免地要將所有元素比較一次。壞的情況與好的情況都要較長的執行過程。

【有多個相同的元素】由於要交換位置,排序前後相同元素的相對次序會改變。

按照選擇排序的原理,我們也可以在每次選出最大的元素,將其放在陣列的後端。進而,我們可以同時選出最小和最大的元素,分別放在陣列的前端和後端。

(還有很多其他改進方向:怎麼樣更快選出最小的元素;怎麼樣使得排序前後相同元素的相對次序不改變等)

public void selectsort2(int a)

if (a[maxindex] < a[j])

}if (maxindex == i && minindex == a.length - 1 - i)

else if (maxindex == i)//特殊位置:最大的在最前面,最小的在後面

else //(minindex == a.length - 1 - i)特殊位置:最小的在最後面,最小的在前面

//和普通情況}}

//注意交換時用ref引數

public void swap(ref int a, ref int b)

[1]鄧俊輝.資料結構(c++語言版)第三版[m]

排序演算法c#實現之氣泡排序詳解

排序演算法c#實現之歸併排序詳解

排序演算法c#實現之插入排序詳解

C 實現排序演算法之選擇排序

c 實現排序演算法之選擇排序 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是 第一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小 大 元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元...

選擇排序演算法之C 實現

選擇排序演算法,和上篇講的冒泡演算法很類似.很容易混淆理解.所以這篇緊接著就講選擇排序演算法.上篇講過,之所以叫氣泡排序,是因為從第乙個數開始和自己相鄰的元素做兩兩比較,哪個最大就後置,然後這樣第二個元素就比第乙個元素大,用同樣的方法就保證了第三個元素又比第二個元素要大.不斷重複這個過程,最後乙個元...

排序演算法C 實現之氣泡排序詳解

假設現在我們有一組資料a 將資料組中的資料元素從小到大排列 即順序,反之逆序 使得資料組由無序變為有序。第一步 按照從左到右的順序獲取資料元素。注意 從左到右 是我們在視覺上看這組資料的描述,在記憶體中或者說在寫 時,我們是按照資料元素的索引從小到大獲取元素的。第二步 比較獲取的第乙個元素與第二個元...