排序方法分為以下幾種,我將在接下來的幾篇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 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。我的通俗解釋 第一遍...