• 基础算法之选择排序


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

    选择排序虽然实现起来比较简单,但是效率也比较低, 为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:
    ");
        for(i=0; i<MAXSIZE; i++)
        {
            scanf("%d",&a[i]);
        }
        printf("before the sort:
    ");
        for(i=0; i<MAXSIZE; i++)
        {
            printf("%d ", a[i]);
        }
        printf("
    ");
        
        selection_sort(a);
    
        printf("after the sort:
    ");
        for(i=0; i<MAXSIZE; i++)
        {
            printf("%d ", a[i]);
        }
        printf("
    ");
    }
    View Code
  • 相关阅读:
    url参数中出现+、空格、=、%、&、#等字符的解决办法
    hybrid app、react-native 区别
    native app、web app、hybrid app、react-native 区别
    hybrid app 知识点
    使用过的bug跟踪系统
    移动端点击延迟的解决方案
    Java中的null
    类加载器 知识点
    hashcode 知识点
    stylus 知识点
  • 原文地址:https://www.cnblogs.com/beyond-Acm/p/4384686.html
Copyright © 2020-2023  润新知