zoukankan      html  css  js  c++  java
  • 基础算法之选择排序

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

    选择排序虽然实现起来比较简单,但是效率也比较低, 为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
  • 相关阅读:
    第03组 Beta冲刺(2/5)
    2019 SDN上机第6次作业
    第03组 Beta冲刺(1/5)
    2019 SDN上机第5次作业
    SDN课程阅读作业(2)
    2019 SDN上机第4次作业
    第05组 团队Git现场编程实战
    第05组 团队项目-需求分析报告
    团队项目-选题报告
    第07组 Alpha事后诸葛亮
  • 原文地址:https://www.cnblogs.com/beyond-Acm/p/4384686.html
Copyright © 2011-2022 走看看