文章目錄
- 前言
- 一、選擇排序的基礎知識點
- 1.選擇排序法的排序原理
- 2.選擇排序法的所屬類別
- 3.選擇排序法的演算法復雜度
- 二、選擇排序法的動態圖
- 三、代碼
- 總結
前言
今天和大家來一起討論選擇排序法,如有不足,望各位多多指正,
以下是本篇文章正文內容,
一、選擇排序的基礎知識點
1.選擇排序法的排序原理
選擇排序法是一個比較直觀的排序方法,排序原理為:從未排序序列中選擇出最小(大)值放入已排序序列之首,再從剩余元素中選最小值放入已排序序列末端,以此類推,回圈n-1次便完成排序,
2.選擇排序法的所屬類別
選擇排序法屬于“比較類排序”
3.選擇排序法的演算法復雜度
選擇排序法最壞的情況為與我們所需的序列完全相反的序列,排序操作分別執行n-1、n-2、n-3…1次,由公式(n-1)(n-1+1)/2得計算次數為(n-1)n/2次,當我們取n為∞時,時間復雜度便為O(n2),
選擇排序法的穩定性為:不穩定
解釋:
穩定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面,
不穩定:如果a原本在b的前面,而a=b,排序之后 a 可能會出現在 b 的后面,
因為a與b是否會互換由寫程式的人來決定,
二、選擇排序法的動態圖
此圖片轉自“博客園”博主“一像素”的博客,
博客鏈接 https://www.cnblogs.com/onepixel/p/7674659.html
以GIF的形式可以讓大家看的更直觀,

三、代碼
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n, count, i, min, temp, medium;
cin >> n; // 給 n 賦值,有n個數
int a[n]; //陣列里面存放n個數
for(count = 0; count < n; count++)
cin >> a[count]; //輸入每個數字
for(count = 0; count < n; count++) //過n遍
{
min = 9999; //每次都要初始化一下最小值
for(i = count; i < n; i++) //把所有的數過一遍 i=count的原因是因為前面為的數列已經排好序了
{
if(min > a[i])
{
min = a[i]; //把最小的數賦值給min
a[i] = a[count];
a[count] = min; //互換值
}
}
}
for(count = 0; count < n; count++)
cout << a[count] << " ";
return 0;
}
總結
以上就是今天要講的內容,本文僅僅簡單介紹了選擇排序法的使用,寫博客僅想與大家一起交流討論,相互學習和記錄自己的學習經歷,若讀者有更短、更優、更快的演算法以及程式,歡迎大家一起交流!再見!轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259554.html
標籤:其他
上一篇:猜數字小游戲
