ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2、选择排序

2021-04-10 21:59:48  阅读:203  来源: 互联网

标签:12 选择 88 321 66 100 排序 78


2、选择排序

选择排序(升序)的思想:总是从待排数组中选择最小的数

#include <bits/stdc++.h>
using namespace std;
void select_sort(int* a, int len);
void print(int* a, int len, bool isBefore= true);
int main(){
	int arr[10] = {1, 2, 66, 33, 88, 100, 18, 78, 12, 321};
	print(arr, 10);
	cout << "选择排序:" << endl;
	select_sort(arr, 10);
	print(arr, 10, false); 
	return 0;
}
 void print(int* a, int len, bool isBefore){
 	if(isBefore)
 		cout << "before sort:";
 	else
 		cout << "after sort:";
 		
 	for(int i = 0; i< len; i++){
 		cout << a[i] << " ";
	 }
 	cout << endl;
 }
void select_sort(int* a, int len){
	//从待排数组(0-len-1)中选择最小的,放到第一个元素处。
	//从待排数组(1-len-1)中选择最小的,放到第一个元素处。
	int temp;
	int minIdx; 
	for(int i = 0; i < len-1;i++){//多少论 
		temp = a[i];//先保存一下 
		minIdx = i;
		for(int j = i; j < len; j++){
			minIdx = (a[j] < a[minIdx])?j:minIdx;
		}
		a[i] = a[minIdx];
		a[minIdx] = temp;
	} 
}

思路分析(升序):

第一轮结束:1,2,66,33,88,100,18,78,12,321

第二轮结束:1,2,66,33,88,100,18,78,12,321

第三轮结束:1,2,12,33,88,100,18,78,66,321

第四轮结束:1,2,12,18,88,100,33,78,66,321

第五轮结束:1,2,12,18,33,100,88,78,66,321

第六轮结束:1,2,12,18,33,66,88,78,100,321

第七轮结束:1,2,12,18,33,66,78,88,100,321

此时已经全部排序完毕。

标签:12,选择,88,321,66,100,排序,78
来源: https://blog.csdn.net/qiangqiang103/article/details/115584850

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有