首页 > 代码库 > 插入排序2.0

插入排序2.0

好久没复习以前写的数据结构了,今天看了一段以前写的插入排序。

插入排序原理:通俗讲,和打扑克牌整理牌是一个道理,从一堆混乱牌中,一张一张拿,拿一张后与前面排好的牌一个个比较,插入合适的位置。

时间复杂度:O(n^2)

/*插入排序2.0
**此版本将创建数组函数删除,
**创建数组与插入排序编排到
**同一个函数里。
*/


#include "stdafx.h"
#include <stdio.h>

#define M 1000

void Insert_sorting(int a[],int n);//插入排序
void Out_put(int a[], int n);//输出数组

int main()
{
    int n;
    int a[M] = {0};

    printf_s("输入待排序个数\n");
    printf_s("n=");
    scanf_s("%d", &n);

    Insert_sorting(a,n);
    Out_put(a, n);

    return 0;
}


void Insert_sorting(int a[], int n)
{
    int i, j, wep;//wep is 中间变量

    printf_s("请输入第1个值=");
    scanf_s("%d", &a[0]);

    for (i = 1; i < n; i++)
    {
        printf_s("请输入第%d个值=", i+1);
        scanf_s("%d", &a[i]);

        for (j = i;; j--)
        {
            if (j == 0)
            {
                break;
            }

            if (a[j] < a[j - 1])
            {
                wep = a[j - 1];
                a[j - 1] = a[j];
                a[j] = wep;
            }
            else
            {
                break;
            }
        }
    }
}
void Out_put(int a[], int n)
{
    int i;

    for (i = 0; i < n; i++)
    {
        printf_s("%d   ", a[i]);
    }
}

 

插入排序2.0