C语言选择排序详解及其实现
2016-06-10 21:48
337 查看
选择排序(Selection sort)是一种简单直观的排序算法。这次我们依然将其分为有序组与无序组。
(推荐其他两种排序算法
冒泡排序:/article/11890589.html
插入排序:/article/11890587.html
)
它的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。
以升序为例的图解:
代码:
执行结果:
(推荐其他两种排序算法
冒泡排序:/article/11890589.html
插入排序:/article/11890587.html
)
它的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。
以升序为例的图解:
代码:
#include<stdio.h> void SelectionSort(int *num,int n) { int i = 0; int min = 0; int j = 0; int tmp = 0; for(i = 0;i < n-1;i++) { min = i;//每次讲min置成无序组起始位置元素下标 for(j = i;j < n;j++)//遍历无序组,找到最小元素。 { if(num[min]>num[j]) { min = j; } } if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置 { tmp = num[min]; num[min] = num[i]; num[i] = tmp; } } } int main() { int num[6] = {5,4,3,2,9,1}; int i = 0; SelectionSort(num,6);//这里需要将数列元素个数传入。有心者可用sizeof在函数内求得元素个数。 for(i = 0;i < 6;i++) { printf("%d ",num[i]); } return 0; }
执行结果:
相关文章推荐
- C++解压zip文件
- C++11中的std::bind
- SCPPO(二):禅道的使用—管理员
- 【C语言】15-预处理指令1-宏定义
- C++中常用的STL 函数
- C++11多线程之yield
- 在C/C++代码中使用SSE等指令集的指令(1)介绍
- C++ 类的6个缺省函数
- C++Primer 中文版 第五版 第十章课后习题答案
- 【每天学一点】C++基础02
- Balanced Binary Tree
- C/C++杂记:运行时类型识别(RTTI)与动态类型转换原理
- 指针详解与内存映像图(一)
- C++ 副本构造器
- c++中string和double等数据类型的相互转化
- C++ 构造器
- C++面试笔记--字符串
- C++实现二叉树的前序创建 前序遍历
- Minimum Depth of Binary Tree
- C++ Primer学习笔记(一)