#include <iostream> using namespace std; int main() { int arr[6] = { 0 }; int len = sizeof(arr) / sizeof(int); for (int i = 0; i < len; i++) { cin >> arr[i]; } // write your code here...... for(int i=0;i<len-1;i++) { int mini=i; for(int j=i+1;j<len;j++ ){ if(arr[j]<arr[mini]){ mini=j; } } int tmp=arr[i]; arr[i]=arr[mini]; arr[mini]=tmp; } for(int i=0;i<len;i++){ cout<<arr[i]<<" "; } return 0; }
选择算法 首先寻找整个数组里最小元素放在序列开头,然后在未排序的序列里找最小的那个,放在已排序序列的最后,以此类推,直至所有的元素均排列。
a[0]=min(a[0],[1].....a[n-1])
a[1]=min(a[1],a[2]...a[n-1])
....
a[n-2]=min(a[n-2],a[n-1])
a[n-1]=a[n-1]------a[n-2] 求值时已经换过去了,只剩最后一个
所以i取值[0,n-2],mini初始化为i,所以j取值[i+1,n-1]
时间复杂度最好最坏平均都是O(
) ;空间复杂度O(1);不稳定排序