网站首页
手机版

选择排序算法c语言代码(选择排序算法c语言代码)

更新时间:2024-08-26 00:10:58作者:未知

选择排序算法c语言代码(选择排序算法c语言代码)

上次给大家讲了三分钟快速记住冒泡排序算法,今天给大家讲讲选择排序算法,依然只用三分钟就可以快速记住,跟着我一起来吧!

上动画

给 “6 5 4 3 2 1” 6个数字增序排序的流程

大体过程:

我们把一串待排序的数字分为已排序、和待排序的两类(当然,初始状态全都是待排序的)。然后每一趟将待排序中的最小值和待排序中第1个元素交换,此时待排序中第1个元素就能归到已排序中。将这个流程进行 6 趟就完成了排序。

选择排序原理:

①、初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列

  ②、再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾

 ③、以此类推,直到所有元素均排序完毕。

选择排序与冒泡排序区别:

选择排序是在剩下的待排序数字里面找个最小的再交换;冒泡排序是看见小的就交换。

选择排序代码:

#include <cstdio>

/* 交换函数

* 传入:待交换两元素的地址 */

void swap(int *x, int *y) {

int temp = *x;

*x = *y;

*y = temp;

}

/* 增序的选择排序

* 传入:待排序数组a、数组元素个数n */

void selectSort(int a[], int n) {

/* 进行n趟操作 */

for(int i = 0; i < n; i++) {

int min_index = i; //记录待排序部分中最小值的下标

/* 扫描待排序部分,知道到最小值的下标 */

for(int j = i; j < n; j ++) {

if(a[j] < a[min_index])

min_index = j; //时刻更新最小值下标

}

swap(a + i,a + min_index); //交换 当前位 和 待排序部分中最小值

}

}

int main() {

int a[] = {5,2,3,4,15,16,100,23,88};

selectSort(a, 9);

for(int i = 0; i < 9; i++)

printf(“%d “, a[i]);

//输出结果:2 3 4 5 15 16 23 88 100

}

本文标签: [db:关键词]  

为您推荐

ios照片彻底删除后恢复方法(ios照片彻底删除后恢复方法是什么)

接下来就来说说我的亲身经历,有一次,我想在ipad平板上下载软件,大家都知道下载软件的话是需要登入ID的,于是乎我登入了手机上原有的ID,很正常的把软件下载好了,无意间看了下平板上的相簿。 发现多了

2024-08-26 00:10

大皇帝ol手游必练武将

万万没想到之大皇帝作为一款策略卡牌手游,玩家在游戏过程中需要不断的收集各类英雄,但是并非几个比较好的英雄搭配在一起就能发挥理想的效果,还需要玩家对于英雄进行合理的搭配。下面小编就为大家带来万万没想到之

2024-08-26 00:10

选择排序算法c语言代码(选择排序算法c语言代码)

上次给大家讲了三分钟快速记住冒泡排序算法,今天给大家讲讲选择排序算法,依然只用三分钟就可以快速记住,跟着我一起来吧!上动画 给 “6 5 4 3 2 1” 6个数字增序排序的流程大体过程:我们把一串

2024-08-26 00:10

惠普打印机无线打印教程 惠普3636打印机手机无线打印教程

三星的打印机业务在去年 9 月份时候被 HP 公司以 10.5 亿美元的价格收购,而当时国外媒体报道,HP 的打印机业务频频出现问题,后人们发现部分打印机在进行 Dynamic Security 固件

2024-08-26 00:08

excel表格的使用方法(excel表格的使用教程)

在日常Excel表格办公中,我们需要运用各类函数,来帮助我们快速计算各类数据,但当数据带有公式显示时,通常不能正确地再次进行计算,那么我们该如何将数据的公式清除,只保留数据呢?今天我们就来教大家清除数

2024-08-26 00:08

idea设置格式化模板分享(idea格式化代码)

在讲完Project和Module这两个概念、它们之间的关系,以及如何去创建和删除Module之后,接下来我们就要对IntelliJ IDEA做一些常规配置了。大家也看到了,目前咱们写的这个Hello

2024-08-26 00:08