C 排序 1 選擇排序

2021-09-12 11:59:23 字數 1089 閱讀 5127

排序方法分為以下幾種,我將在接下來的幾篇blog中,介紹每一種。

首先是比較簡單的選擇排序中的直接選擇排序。時間按複雜度為o(n^2),空間複雜度為o(1),是一種不穩定的排序方法。

具體形式如下圖所示:

第一次從9,1,4,6,2中選擇最小的,即1,將1與 a[0] = 9調換位置,確定了第乙個位置的資料元素;

第二次從9,4,6,2中選擇最小的,即2,將2與 a[1] = 9調換位置,確定了第二個位置的資料元素;

第三次從9,4,6中選擇最小的,即4,由於a[2] = 4,所以不用調換位置,確定了第三個位置的資料元素;

第四次從6,9中選擇最小的,即6,由於a[3] = 6,所以不用調換位置,確定了第四個位置的資料元素;

a[4] 的資料直接有序啦。

綜上可得:若資料有n個時,需要(n - 1)次選擇。由於每次選擇出最小的資料後,可能需要調換位置,所以選擇排序是一種不穩定的排序方法。

用c語言**實現如下:

//選擇排序-c語言

#include #define n 10 //巨集定義

//選擇排序的函式

void sort_select (int *arr,int n)

} if(i != mid )//將第i號位的數字與比較出最小的數字調換位置

//否則什麼也不幹,所以省略咯 }}

//寫出陣列長度為 n 的一維陣列

void show(int *arr,int n)

printf("\n");

}int main()

; sort_select(b,n);

show(b,n);

return 0;

}

實現結果如下:

1 選擇排序

選擇排序演算法思想描述 1 定義變數minindex每次都指向全域性最小值 2 從陣列0位置開始,minindex 0,把1 n 1位置上的每乙個數依次取出 用下標j指向 和minindex位置的數比較,如果取出的這個數arr j 比arr minindex 的數小,更新minindex j,否則不...

排序 選擇排序(C )

1 選擇排序的核心思想是 1 第1趟排序是從第 1個元素 後面的 n 1 個元素中選擇乙個值最小於第1 個元素的元素與第 1個元素交換位置 2 第2 趟排序是從第 2個元素後面的 n 2個元素中選擇乙個值最小於第 2個元素的元素與第 2個元素交換位置 3 以此類推,知道第n 1 趟,排序結束。第 i...

排序 1 選擇排序 C語言實現

選擇排序的基本思想 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。我的通俗解釋 第一遍...