C++算法之排序(3)——选择排序
本文最后更新于 437 天前,其中的信息可能已经有所发展或是发生改变。

今天,我来向大家介绍另一种排序方法:选择排序。这种排序思路非常简单,如图所示:

选择排序

就是把未排序的数列中最小(或最大)的数与未排序的第一个数交换。不多说了,上代码:

#include<bits/stdc++.h>
using namespace std; 
int a[110];
int n;
//选择排序 
int main(){
	
	cin >> n;  						//共有n个整数待排序 
	for(int i=0;i<n; i++)  	//输入n个整数 
		cin>>a[i];
	//下面对整个数组进行从小到大排序
	for(int i=0;i<n-1;i++){		//每次循环将第i小的元素放好 
		int tmpMin=i;  //用来记录从第i个到第n-1个元素中,最小的那个元素的下标 
		for(int j=i;j<n;j++){
			if(a[j]<a[tmpMin])
				tmpMin=j;
		}
	//下面将第i小的元素放在第i个位置上,并将原来占着第i个位置的那个元素挪到后面
		swap(a[i],a[tmpMin]);
	}
	//下面两行将排序好的n个元素输出
	for(int i=0;i<n;++i)
		cout << a[i] << endl;
	return 0;
}

结果:

结果

最坏时间复杂度:\large O(n^2)             

最好时间复杂度:\large O(n^2)             

平均时间复杂度:\large O(n^2)

版权声明:本文为博主Alex172原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://nth.ink/cpp/P544.html

(广告由我们的赞助商提供,内容与本站无关)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇