zoukankan      html  css  js  c++  java
  • 排序算法之----选择排序&插入排序

    #include <stdio.h>
    #include <stdlib.h>
    
    //选择排序
    //基本思想:通过n-i次关键字的比较,从n-i+1个记录中选择最小的记录,并和第i(1=<i<=n)个记录交换
    //时间复杂度:O(n^2)但是交换次数明显比冒泡排序少
    void SelectSort(int k[], int n)
    {
        int i, j, tmp, min;
        for (i = 0; i < n - 1; i++)
        {
            min = i;
            for (j = i+1; j < n; j++)
            {            
                if (k[j] < k[min])
                {
                    min = j;
                }
            }
            if (min != i)
            {
                tmp    = k[i];
                k[i]   = k[min];
                k[min] = tmp;
            }
        }
    }
    
    //插入排序
    //基本思想:将一个记录插入到已经拍好序的有序表中,从而得到一个新的,记录数增加1的有序表
    //时间复杂度:,O(n^2)
    void InsertSort(int k[], int n)
    {
        int i, j, tmp;
        for (i = 1; i < n; i++)
        {
            if (k[i] < k[i - 1])
            {
                tmp = k[i];
                for (j = i - 1; (k[j] > tmp)&&(j >= 0); j--)
                {
                    k[j + 1] = k[j];
                }
                k[j + 1] = tmp;
            }
        }
    }
    
    void print(int a[], int num)
    {
        int i = 0;
        for (i = 0; i < num; i++)
        {
            printf("%d ", a[i]);
        }
        printf("
    ");
    }
    
    int main()
    {
        int a[10] = { 2, 3, 56, 1, 4, 7, 8, 94, 3, 10 };
        InsertSort(a, 10);
        print(a, 10);
        return system("pause");
    }
  • 相关阅读:
    spring-base.xml
    计算和证明施密特正交,写的很清楚
    推理
    存在某种关系时,推理存在新关系
    PyCharm 技巧
    3#记录
    2#记录
    一文揭秘!自底向上构建知识图谱全过程
    1#记录
    本体建模小结
  • 原文地址:https://www.cnblogs.com/henkk/p/11206249.html
Copyright © 2011-2022 走看看