日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构-简单选择排序(C语言)

發布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构-简单选择排序(C语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1.基本思想:
    • 2.例子講解:
    • 3.代碼實例C語言:
    • 4.時間復雜度分析

1.基本思想:

第i趟排序開始時,當前有序區和無序區分別為R[0…i-1],R[i…n-1] (0<=i<n-1),該趟排序是從當前無序區中選出關鍵字最小的元素R[k],將它與無序區的第一個元素R[i]交換,使R[0…i]為新的有序區,R[i+1…n-1]為新的無序區

2.例子講解:

49, 38, 65, 97, 76, 13, 27
一開始的無序區就是上面的所有數49, 38, 65, 97, 76, 13, 27,有序區默認沒有
第一次從無序區中找到最小元素13和無序區第一個元素49交換位置,新的無序區為 38, 65, 97, 76, 49, 27新的有序區為:13
以此類推

圖片來自網絡

3.代碼實例C語言:

#include<stdio.h> #define LENGTH 6void simpleSort(int disorder[],int length) {int min_index = 0;int temp = 0;for(int i = 0;i<length;i++) {min_index = i;//令i為最小下標min_indexfor(int j = i+1;j<length;j++) {if(disorder[j]<disorder[i]) {//每次遍歷找到最小值的下標min_index = j;}}if(min_index!=i) {//如果發現了比min_index下標還小的元素,就交換i下標與min_index下標的值temp = disorder[i];disorder[i] = disorder[min_index];disorder[min_index] = temp;}} }void main() {int disorder[] = {49, 38, 65, 97, 76, 13, 27};//無序區simpleSort(disorder, LENGTH);for(int i = 0;i<LENGTH;i++) {printf("%d ",disorder[i]);}}

換種數據結構書上的那種寫法:

#include<stdio.h> #define LENGTH 6typedef struct {int key; }RecType;void simpleSort(RecType disorder[],int length) {int min_index = 0;RecType temp;for(int i = 0;i<length;i++) {min_index = i;//令i為最小下標min_indexfor(int j = i+1;j<length;j++) {if(disorder[j].key<disorder[i].key) {//每次遍歷找到最小值的下標min_index = j;}}if(min_index!=i) {//如果發現了比min_index下標還小的元素,就交換i下標與min_index下標的值temp = disorder[i];disorder[i] = disorder[min_index];disorder[min_index] = temp;}} }void main() {RecType disorder[7] = {{49}, {38}, {65}, {97}, {76}, {13}, {27}};//無序區simpleSort(disorder, LENGTH);for(int i = 0;i<LENGTH;i++) {printf("%d ",disorder[i]);}}

輸出結果如下

4.時間復雜度分析

1.平均時間復雜度:O(n2)

2.空間復雜度:O(n)
??在簡單選擇排序算法中simpleSort()函數中使用i、j、k和temp 這4個輔助變量,與問題規模n無關,被調用后資源釋放,而主函數中int disorder[] = {49, 38, 65, 97, 76, 13, 27}定義了一個數組,并分配空間,故空間復雜度為O(n)

推薦鏈接:https://cuijiahua.com/blog/2017/12/algorithm_5.html

總結

以上是生活随笔為你收集整理的数据结构-简单选择排序(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。