电子商务网站建设与管理习题答案,wordpress快速,企业形象网站模板,企业网站建设立项书选择排序的思想
选择排序的思想和冒泡排序类似#xff0c;是每次找出最大的然后直接放到右边对应位置#xff0c;然后将最 右边这个确定下来#xff08;而不是一个一个地交换过去#xff09;。 再来确定第二大的#xff0c;再确定第三大的… 对于数组a[]#xff0c;具体…
选择排序的思想
选择排序的思想和冒泡排序类似是每次找出最大的然后直接放到右边对应位置然后将最 右边这个确定下来而不是一个一个地交换过去。 再来确定第二大的再确定第三大的… 对于数组a[]具体的来说每次确定操作假设当前要确定的是i位置就是从左往右扫描 计算出最大元素的下标max_id, 最后执行一次swap(a[max_id],a[i])将两项交换即可。 第一次确定操作是将a[1]~a[n]中最大的放到a[n] 第二你确定操作是将a[1]a[n-1]中最大的放到a[n-1]。 类推类似地如果你想先把最小的放到左边也是可以的时间复杂度为O(n^2)。
选择排序的实现
#includebits/stdc.h
using namespace std;
const int N1e39;
int a[N];
int main(){int n;cinn;for(int i1;in;i)cina[i];//i表示当前要确定的位置 for(int in;i1;i--){int max_id1;//初始化为1//j从左往右扫求出max_idfor(int j1;ji;j){if(a[j]a[max_id])max_idj;} swap(a[max_id],a[i]);}//输出for(int i1;in;i) couta[i] \n[in];return 0;
}例题讲解 #includebits/stdc.h
using namespace std;
const int N1e39;
int a[N];
int main(){int n;cinn;for(int i1;in;i)cina[i];for(int in;i1;i--){int max_id1;for(int j1;ji;j){if(a[j]a[max_id])max_idj;} swap(a[max_id],a[i]);}for(int i1;in;i) couta[i] \n[in];return 0;
}