C語言和C++語言演算法之排序
1.選擇排序
designed by kjqkdy
(1)基本思想:每一趟從待排序的資料元素中選出最小的(或最大的)一個元素,順序放在待排數列的最前面,直到全部待排序的資料元素排完,
(2)排序程序:(以下以升序排列)
初識關鍵字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49] (找出初始序列中最小值13)
第二趟排序后 13 27 [65 97 76 49 27 49] (找出除去13剩余數中的最小值27]
.
.
.
.
.
.
第七趟排序結果 13 27 38 49 49 65 76 [97]
最后的排序結果 13 27 38 49 49 65 76 97
語言部分
基本步驟
1.讀入資料放在a陣列中,
2.在a[1]~a[n]中選擇值最小的元素,與第一位置元素交換,即把最小元素放入a[1]中,
3.在a[2]~a[n]中選擇值最小的元素,與第二位置元素交換,即把最小元素放入a[2]中,,,,,,,
4.直到第n-1個元素與第n個元素比較排序為止,
程式實作方法:用兩層回圈完成演算法,外層回圈i控制當前最小值存放的陣列位置,內層回圈j控制從i+1到n的序列中選擇最小元素所在位置k,
#include<iostream>
using namespace std;
int main()
{
int n,i,j,k,temp;
cin>>n;
int a[n+1];
for(i=1;i<=n;i++) cin>>a[i]; //輸入待排序列
for(i=1;i<=n;i++) //i控制最小數存放的位置
{
k=i;
for(j=i+1;j<=n;j++) //在區間[i+1,n]選擇最小元素a[k]
if(a[j]<a[k]) k=j;
if(k!=i) //找到了比a[i]還小的數,就將他和a[i]交換位置
{
temp=a[i];a[i]=a[k];a[k]=temp;
}
}
for(i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}
***designed by kjq***
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224528.html
標籤:其他
上一篇:TCP三次握手,UDP,四次揮手,TIME_WAIT
下一篇:Git使用筆記
