您的位置:首页 > 编程语言 > C语言/C++

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;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐