第八天、直接插入排序

     插入排序是把一个记录插入到已排序的有序序列中,使整个序列在插入该记录后仍然有序。插入序列中较简单的一种方法是直接插入排序,其插入位置的确定方法是将待插入的记录与有序区中的各记录自右向左依次比较其关键字值的大小。本实例要求使用直接插入排序法将数组由小到大进行排序。 代码:

/*第八天、直接插入排序*/
#include <stdio.h>
#include <stdlib.h>
/*声明排序函数*/
void insort(int s[],int n);
/*监视哨:监视哨往往是程序里面的一个变量,如果是对数字排序的话,那么该变量一般是数值型变量。
变量的赋值就相当于哨兵,当排序数列中出现与哨兵相等的值或有某种既定关系出现时,就做一种操作,
比如说停止排序,或进行下一趟排序。*/
void main(void)
{
    int *a,n,i,j;
    printf("请问您要输入几个数据?例如:10\n");
    scanf("%d",&n);
    printf("请输入%d个数据:\t例如:20 15 46 21\n",n);
    a = (int *)malloc(sizeof(int) * n);    /*数组指针,动态分配数组大小*/
    for(i = 0;i < n;i++)
        scanf("%d",&a[i]);        /*接收从键盘输入的数据存放到数组中*/
    printf("原始顺序:");
    for(i = 0;i < n;i++)
        printf("%5d",a[i]);
    insort(a,n);
    printf("\n排序后数据:");
    for(i = 0;i < n;i++)
        printf("%5d",a[i]);
    printf("\n");
    free(a);                    /*释放内存*/
    system("pause");
}
/*排序函数*/
void insort(int s[],int n)
{
    int i,j,num;
    for(i = 1;i < n;i++)    /*从第二个元素开始比较*/
    {
        num = s[i];            /*监视哨,它就是要插入的数*/
        j = i - 1;            /*确定要比较元素的最右边位置*/
        while(num < s[j])    /*当j<0的时候,s[j]返回一个很大的负值,条件不成立退出循环*/
        {
            s[j + 1] = s[j];/*数据右移*/
            j--;            /*索引值左移,指向比较的下一个数*/
        }
        s[j + 1] = num;
    }
}

结果显示:

     感觉python和C放在一起练习的效果不好,比如今天的排序,python用一个sort()就能解决问题。因此决定python的练习另找习题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和未来有约会

简练的视图模型 ViewModel

patterns & practices Developer Center 发布了 Unity Application Block 1.2 for Silver...

2319
来自专栏WOLFRAM

错觉艺术的巅峰,错觉图形大师M.C. Escher的不可能方块的可能模型

1423
来自专栏linux驱动个人学习

高通msm8909耳机调试

1、DTS相应修改: DTS相关代码:kernel/arch/arm/boot/dts/qcom/msm8909-qrd-skuc.dtsi: 1 s...

7965
来自专栏MelonTeam专栏

Bitmap 源码阅读笔记

导语: Android 系统上的图片的处理,跟Bitmap 这个类脱不了关系,我们有必要去深入阅读里面的源码,以便在工作中能更好的处理Bitmap相关的问题...

2598
来自专栏Hadoop数据仓库

Oracle sqlldr 如何导入一个日期列

1. LOAD DATA INFILE * INTO TABLE test FIELDS TERMINATED BY X'9' TRAILING NULLCO...

1866
来自专栏增长技术

App Guide相关

##TourGuide https://github.com/worker8/TourGuide

812
来自专栏Petrichor的专栏

Dataset 列表:机器学习研究

In computer vision, face images have been used extensively to develop face recog...

1751
来自专栏Golang语言社区

Knapsack problem algorithms for my real-life carry-on knapsack

I'm a nomad and live out of one carry-on bag. This means that the total weight o...

1182
来自专栏linux驱动个人学习

高通Audio中ASOC的machine驱动

ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的...

1K4
来自专栏搞前端的李蚊子

Html5模拟通讯录人员排序(sen.js)

// JavaScript Document  var PY_Json_Str = ""; var PY_Str_1 = ""; var PY_Str_...

6326

扫码关注云+社区