博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++数据结构 选择排序 个人笔记
阅读量:3966 次
发布时间:2019-05-24

本文共 1226 字,大约阅读时间需要 4 分钟。

选择排序的文字描述

1: 首先需要任意假设一个数组下标里的元素是最大值或最小值

一般选择数组的第一个元素为最大值或最小值
2: 用 end 表示是这个数组的最后一个下标,如果是从小到大进行排列且假设第一个元素(数组下标为零)为这个数组的最大值 与数组下标从1开始到end的所有元素比较,其他数组元素> max下标所在的数据 就把 max = 比max下标所在的数据大的下标,max 始终是最大元素的下标
3:找出 max 之后,判断是否是end这个下标,不是max下标中的数据和end下标中的数据交换.end这个下标中的数据就不在进行遍历.每找到一次max就把end–,end 这个下标到实际数组中最后一个元素的下标中的数据是一个从小到大有序的数组

选择排序的代码实现

源代码:

#include 
using namespace std;/*********************************** 函数作用: 使用选择排序从小到大排列整型数据** 函数参数: arr - int类型的数组首地址* num - 数组元素的总个数** 函数返回值: 无返回值**************************************/void choiceSort(int *arr,int num) {
//首先i = 这个数组的最后一个下表,每循环一次i--; for (int i = num -1; i >= 0;i--) {
int max = 0; //最大数据的下标置零 假设最大数据的下标是零 //从下标为1的数据开始遍历 for (int j = 1; j <= i; j++) {
//如果下标为max中的数据小于数组中任意下标(j)中的数据 if (arr[max] <= arr[j]) {
//j 赋值给 max 使max 这个下标中的数据永远是这个数组中最大的数据 max = j; } } //结束循环后 //如果 max 不是数组中最后一个元素的下标 if (max != i) {
//交换max 和最后一个元素的下标的元素 int tmp; tmp = arr[max]; arr[max] = arr[i]; arr[i] = tmp; } }}int main(void) {
int arr[] = {
20,3,4,5,10,8,9,7,18,0 }; choiceSort(arr,sizeof(arr)/sizeof(arr[0])); for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
printf("%d\t", arr[i]); } return 0;}

代码测试:

在这里插入图片描述

转载地址:http://rfyki.baihongyu.com/

你可能感兴趣的文章
mybatis高级结果映射
查看>>
java 中的锁
查看>>
线程池
查看>>
深入浅出:Tomcat应用服器中Servlet容器架构及工作原理剖析
查看>>
fastjson 将json和java对象相互转换
查看>>
java获取cookie
查看>>
kafaka用例&市上最全总结
查看>>
神器 PySimpleGUI 初体验
查看>>
编程 学习视频教程大全
查看>>
查找最快的docker镜像
查看>>
AssignProcessToJobObject 错误码5 的解决办法
查看>>
windows LibreOffice 6.3.5 安装出错1355 问题解决
查看>>
libreoffice/openoffice c/c++转换office格式为pdf
查看>>
Tomcat 7.0 64位免安装解压版 安装及配置
查看>>
Android 网络编程 初级入门(一)
查看>>
No enclosing instance of type Demo06 is accessible.
查看>>
计算机发展中的两大“杀手”
查看>>
《奔跑吧,兄弟》之王祖蓝的"钥匙配箱子"概率统计问题--->>回眸
查看>>
MDK5(Keil for ARM) 工程建立时遇到的问题集锦
查看>>
(正则表达式)邮件地址爬虫
查看>>