C语言选择排序详解及其实现笔记
2017-11-09 16:47
337 查看
选择排序(Selection sort)是一种简单直观的排序算法。这次我们依然将其分为有序组与无序组。
(推荐其他两种排序算法
冒泡排序:http://blog.csdn.net/llzk_/article/details/51547923
插入排序:http://blog.csdn.net/llzk_/article/details/51628574
)
它的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。
以升序为例的图解:
代码:
[cpp] view
plain copy
#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; //min指向比较小的num[j]的下标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;
}
(推荐其他两种排序算法
冒泡排序:http://blog.csdn.net/llzk_/article/details/51547923
插入排序:http://blog.csdn.net/llzk_/article/details/51628574
)
它的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。
以升序为例的图解:
代码:
[cpp] view
plain copy
#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; //min指向比较小的num[j]的下标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语言选择排序详解及其实现
- C语言选择排序详解及其实现
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- 数据结构之选择排序的实现(C语言)
- 选择排序及其JAVA实现
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序
- 排序(1)---------选择排序(C语言实现)
- 算法(第四版)学习笔记之java实现选择排序
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- 简单的C语言选择排序实现代码
- 排序--简单选择排序思想及其代码实现
- 学习笔记:冒泡排序、插入排序、选择排序、快速排序的实现
- 冒泡排序、插入排序、选择排序--C语言实现
- 快速排序的C语言实现及其时间复杂度
- (排序)用C语言实现的简单选择排序(选择排序,其实个人认为也是交换排序)