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
  • 相关阅读:
    js简单地发送一个请求
    浏览器缓存知识归纳
    文本选择问题: css & js
    闭包和重写函数 返回IE浏览器版本号
    新项目启动 考虑问题
    Angular 单元格合并
    pointer-events 使用场景
    移动开发 新建空白页面
    CSS Tip
    垂直居中方法
  • 原文地址:https://www.cnblogs.com/beyond-Acm/p/4384686.html
Copyright © 2011-2022 走看看