码迷,mamicode.com
首页 > 编程语言 > 详细

基础算法之选择排序

时间:2015-04-01 19:51:39      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

选择排序的思路比较简单,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

选择排序虽然实现起来比较简单,但是效率也比较低, 为O(n2)。

C语言的代码实现如下 :

 1 //选择排序的C语言实现
 2 void selection_sort(int a[])
 3 {
 4     int i , j;
 5     int min = 0;
 6     for(i=0; i<MAXSIZE-1; i++)
 7     {
 8         for(j=i; j<MAXSIZE; j++)
 9         {
10             if(a[j] <= a[min]) {
11                 min = j;
12             }
13         }
14         swap(a, i, min);
15     }
16 }

一个简单的测试用例:

技术分享
#include<stdio.h>

#define MAXSIZE 10

void selection_sort(int a[]);
void swap(int a[], int i, int j);

//选择排序的C语言实现
void selection_sort(int a[])
{
    int i , j;
    int min = 0;
    for(i=0; i<MAXSIZE-1; i++)
    {
        for(j=i; j<MAXSIZE; j++)
        {
            if(a[j] <= a[min]) {
                min = j;
            }
        }
        swap(a, i, min);
    }
}

void swap(int a[], int i, int j)
{
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}

int main()
{
    int a[MAXSIZE];
    int i;
    printf("Please input the num:\n");
    for(i=0; i<MAXSIZE; i++)
    {
        scanf("%d",&a[i]);
    }
    printf("before the sort:\n");
    for(i=0; i<MAXSIZE; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    
    selection_sort(a);

    printf("after the sort:\n");
    for(i=0; i<MAXSIZE; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
}
View Code

 

基础算法之选择排序

标签:

原文地址:http://www.cnblogs.com/beyond-Acm/p/4384686.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!