欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

常見排序算法之選擇排序

選擇排序

基本思想:

? ? 每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完 。

直接選擇排序

? ? 在元素集合array[i]–array[n-1]中選擇關鍵碼最大(小)的數據元素
? ? 若它不是這組元素中的最后一個(第一個)元素,則將它與這組元素中的最后一個(第一個)元素交換在剩余的array[i]–array[n-2](array[i+1]–array[n-1])集合中,重復上述步驟,直到集合剩余1個元素

void SelectSort(int* a, int n)
{
? ? int begin = 0, end = n - 1;//記錄末尾和開始位置

? ? while (begin < end)//當begin小于end說明數組沒有被完全排序
? ? {
? ? ? ? // [begin, end]
? ? ? ? int mini = begin, maxi = begin;//將開始位置的值的下標賦予mini,maxi
? ? ? ? for (int i = begin + 1; i <= end; i++)
? ? ? ? {
? ? ? ? ? ? if (a[i] > a[maxi])//比開始位置值大則maxi記錄這一位置的下標
? ? ? ? ? ? {
? ? ? ? ? ? ? ? maxi = i;
? ? ? ? ? ? }

? ? ? ? ? ? if (a[i] < a[mini])//比開始位置值小則mini記錄這一位置的下標
? ? ? ? ? ? {
? ? ? ? ? ? ? ? mini = i;
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? Swap(&a[begin], &a[mini]);//最小值與開始值交換
? ? ? ? // max如果被換走了,修正一下
? ? ? ? if (maxi == begin)
? ? ? ? {
? ? ? ? ? ? maxi = mini;
? ? ? ? }

? ? ? ? Swap(&a[end], &a[maxi]);
? ? ? ? ++begin;
? ? ? ? --end;
? ? }
}

直接選擇排序的特性總結:

? ? 直接選擇排序思考非常好理解,但是效率不是很好。實際中很少使用
? ? 時間復雜度:O(N^2)
? ? 空間復雜度:O(1)
? ? 穩定性:不穩定

常見排序算法之選擇排序

文章鏈接: http://www.qzkangyuan.com/25982.html

文章標題:常見排序算法之選擇排序

文章版權:夢飛科技所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!

聲明:本站所有文章,如無特殊說明或標注,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
云數據中心投稿分享

數據結構之常見排序算法的實現

2023-12-12 10:04:24

建站教程

常見排序算法之堆排序

2023-12-14 10:03:50

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 康乐县| 白玉县| 隆化县| 渭源县| 茌平县| 甘洛县| 平果县| 嘉祥县| 惠东县| 东阳市| 民勤县| 自贡市| 吴江市| 前郭尔| 惠东县| 岚皋县| 和龙市| 房产| 建阳市| 八宿县| 凤城市| 会同县| 读书| 台中市| 商都县| 翼城县| 兴山县| 罗山县| 禹城市| 延津县| 孟津县| 赣榆县| 繁峙县| 莎车县| 青铜峡市| 剑阁县| 绥棱县| 湟源县| 平度市| 通州区| 南阳市|