选择排序------------(C每日一编程)

选择排序:

选择:每一趟从无序区选一个值最小(大)的元素,与无序区第一个元素交换

将n个数中最小数与第一个数交换,将n-1个数中最小数与第二个数交换,.......

结论:

n个数要进行n-1轮比较

第i轮要进行n-i次两两比较

cpp 复制代码
for(i=0;i<n-1;i++)
	{k = i;//擂主的下标也就是第二轮擂主的下标是i
	for (j = i + 1; j <= n - 1; j++)//j从i+1开始,小于等于n-1(<n也行)
		if(a[k]>a[j]) k=j;//a[k]和后面a[k+1]的元素比较,发现新擂主就换擂主下标
			if (k != i)//两个相等的数就不用自己与自己比较了,这个条件是少比较一次,不写这句也没关系
			{
				//a[i]与a[k]交换//擂主和最开始a[i]数去交换
			}
	}

一,找到十个整数的最小数,将其与第一个互换。

分析:找出最小数用打擂台法

cpp 复制代码
int a[10], i, min, k;
min = a[0]; k = 0;
for (i = 1; i < 10; i++)
	if (min > a[i]) { min = a[i]; k = i; }
t = a[0]; a[0] = a[k]; a[k] = t;

下面是选择排序法

cs 复制代码
int main() {
	int a[10], i, k,t,j,n;
	for (i = 0; i < 10; i++)
		scanf("%d", &a[i]);
	k = 0;
	for (i = 1; i < 10; i++)
		if (a[k] > a[i]) { k = i; };
	t = a[0]; a[0] = a[k]; a[k] = t;
	for (i = 0; i < 10; i++)
		printf("%d ", a[i]);
	return 0;
}
以上仅供参考。
相关推荐
StockTV12 分钟前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
chaofan98012 分钟前
GPT-5.5 领衔 Image 2.0:像素级控制时代,AI 绘图告别开盲盒
开发语言·人工智能·python·gpt·自动化·api
七颗糖很甜23 分钟前
“十五五”气象发展规划:聚焦五大核心任务
大数据·python·算法
科研前沿29 分钟前
镜像视界浙江科技有限公司的关键技术突破有哪些?
大数据·人工智能·科技·算法·音视频·空间计算
爱码小白32 分钟前
Python 异常处理 完整学习笔记
开发语言·python
嫩萝卜头儿38 分钟前
2 - 复杂度收尾 + 链表经典OJ
数据结构·算法·链表·复杂度
c++之路1 小时前
C++20概述
java·开发语言·c++20
星马梦缘1 小时前
算法设计与分析 作业二 答案与解析
算法·图论·dfs·bfs·floyd-warshall·bellman_ford·多源最短路
玛丽莲茼蒿1 小时前
Leetcode hot100 每日温度【中等】
算法·leetcode·职场和发展
cjp5601 小时前
009.UG二次开发,任务环境草图优化3(高级功能生成直线)
算法