直接插入排序法C程序设计

合集下载

C语言数组的五种简单排序,选择法排序,冒泡法排序、交换法排序、插入法排序、折半法排序

C语言数组的五种简单排序,选择法排序,冒泡法排序、交换法排序、插入法排序、折半法排序

C语⾔数组的五种简单排序,选择法排序,冒泡法排序、交换法排序、插⼊法排序、折半法排序⽂章⽬录1、选择法排序选择法排序是指每次选择索要排序的数组中的最⼩值(这⾥是由⼩到⼤排序,如果是由⼤到⼩排序则需要选择最⼤值)的数组元素,将这些数组元素的值与前⾯没有进⾏排序的数组元素值进⾏互换代码实现需要注意的是:声明⼀个数组和两个整形变量,数组⽤于存储输⼊的数字,⽽整形变量⽤于存储最⼩的数组元素的数值与该元素的位置,在我的代码中实现为a[] temp position。

代码具体如下#include<stdio.h>int main(){int m,n,k;printf("please input the length of the array:");scanf("%d",&k);int a[k];int temp;int position;printf("please input the number of the array:\n");for(m=0;m<k;m++){printf("a[%d]=",m+1);scanf("%d",&a[m]);}/*从⼩到⼤排序*/for(m=0;m<k-1;m++){temp=a[m]; //设置当前的值为最⼩值position=m; //记录当前的位置for(n=m+1;n<k;n++){if(a[n]<temp){temp=a[n]; //如果找到⽐当前的还要⼩的数值,则更换最⼩的数值与位置position=n;}}a[position]=a[m];a[m]=temp;}for(m=0;m<k;m++){printf("%d\t",a[m]);}return 0;}结果如下2、冒泡法排序冒泡法排序就是值在排序时,每次⽐较数组中相邻的两个数组元素的值,将⽐较⼩的(从⼩到⼤排序算法,如果是从⼤到⼩排序算法就是将较⼤的数排在较⼩的数前⾯)排在⽐较⼤的前⾯在代码实现的过程中:声明⼀个数组与⼀个整型变量,数组⽤于存放数据元素,整型变量⽤于交换时作为中间变量。

《三、插入排序》作业设计方案-高中信息技术人教版选修1

《三、插入排序》作业设计方案-高中信息技术人教版选修1

《插入排序》作业设计方案(第一课时)一、作业目标1. 使学生掌握插入排序的基本概念与工作原理。

2. 训练学生运用编程语言实现插入排序算法的能力。

3. 培养学生独立思考、自主解决问题的能力,通过编程实践加深对算法的理解。

二、作业内容1. 理论学习学生需仔细阅读《插入排序》的相关教材内容,了解插入排序的基本概念、原理及其在计算机科学中的应用。

同时,学生应掌握插入排序的算法步骤和关键点。

2. 编程实践(1)编写一个简单的插入排序程序,使用一种编程语言(如Python、Java等)实现。

(2)在程序中加入注释,解释每段代码的作用及算法的执行流程。

(3)程序应能对一组随机数进行排序,并输出排序后的结果。

3. 拓展学习(1)研究插入排序的时间复杂度和空间复杂度,并与其他排序算法进行比较。

(2)尝试改进插入排序算法,如使用二分查找法优化插入位置的选择等。

(3)查阅相关资料,了解插入排序在实际问题中的应用案例。

三、作业要求1. 按时提交作业,不得拖延。

2. 代码书写规范,变量命名清晰,有逻辑性。

3. 注释齐全,对每段代码的功能和算法的执行流程进行详细解释。

4. 程序运行正确,能对一组随机数进行排序并输出结果。

5. 拓展学习部分需有明确的思考和总结,并附上相关参考资料链接或截图。

四、作业评价1. 教师根据学生提交的作业进行批改,评价学生的掌握程度和编程能力。

2. 评价标准包括理论知识的理解程度、编程实践的完成情况、代码的规范性和可读性、注释的完整性以及拓展学习的深度和广度。

3. 对于优秀作业,将在课堂上进行展示和表扬,鼓励学生学习先进经验和做法。

五、作业反馈1. 教师将在批改后给出详细的反馈意见和建议,帮助学生改进和提高。

2. 学生应根据反馈意见对作业进行修改和完善,并重新提交。

3. 对于学生在作业中遇到的问题和困难,教师将给予耐心的指导和帮助。

4. 通过作业反馈和交流,促进学生之间的学习和互动,共同进步。

作业设计方案(第二课时)一、作业目标本课时作业设计旨在巩固学生在上一课时学习的插入排序算法知识,并强化其实践操作能力,让学生能够熟练运用插入排序解决实际问题,培养其逻辑思维能力及计算机编程技能。

内部排序比较 (实验报告+源程序)C++

内部排序比较  (实验报告+源程序)C++

实验报告3实验名称:数据结构与软件设计实习题目:内部排序算法比较专业:生物信息学班级:01 姓名:学号:实验日期:2010.07.24一、实验目的:比较冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序;二、实验要求:待排序长度不小于100,数据可有随机函数产生,用五组不同输入数据做比较,比较的指标为关键字参加比较的次数和关键字移动的次数;对结果做简单的分析,包括各组数据得出结果的解释;设计程序用顺序存储。

三、实验内容对各种内部排序算法的时间复杂度有一个比较直观的感受,包括关键字比较次数和关键字移动次数。

将排序算法进行合编在一起,可考虑用顺序执行各种排序算法来执行,最后输出所有结果。

四、实验编程结果或过程:1. 数据定义typedef struct { KeyType key; }RedType; typedef struct { RedType r[MAXSIZE+1]; int length;}SqList;2. 函数如下,代码详见文件“排序比较.cpp”int Create_Sq(SqList &L)void Bubble_sort(SqList &L)//冒泡排序void InsertSort(SqList &L)//插入排序void SelectSort(SqList &L) //简单选择排序int Partition(SqList &L,int low,int high) void QSort(SqList &L,int low,int high)//递归形式的快速排序算法void QuickSort(SqList &L)void ShellInsert(SqList &L,int dk)//希尔排序void ShellSort(SqList &L,int dlta[ ])3. 运行测试结果,运行结果无误,如下图语速个数为20元素个数为100错误调试无。

c语言排序课程设计

c语言排序课程设计

c语言排序课程设计一、课程目标知识目标:1. 学生能够掌握C语言中的排序算法原理,包括冒泡排序、选择排序和插入排序。

2. 学生能够理解排序算法的时间复杂度和空间复杂度,并能够进行比较和分析。

3. 学生能够运用C语言编写并调试排序算法程序,实现对整数数组的排序操作。

技能目标:1. 学生能够运用所学知识独立设计并实现至少两种排序算法。

2. 学生能够通过分析问题,选择合适的排序算法解决实际问题。

3. 学生能够运用调试工具对排序算法进行测试和优化,提高程序的执行效率。

情感态度价值观目标:1. 学生通过学习排序算法,培养解决问题的逻辑思维能力和程序设计能力。

2. 学生在合作交流中,学会倾听他人意见,提高团队协作能力。

3. 学生在探索排序算法的过程中,培养对编程的兴趣和热情,树立正确的计算机科学价值观。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言程序设计中的算法部分,旨在让学生掌握排序算法的基本原理和实现方法。

2. 学生特点:学生已具备C语言基础知识,有一定的编程能力,但对算法的理解和应用尚需加强。

3. 教学要求:教师应注重启发式教学,引导学生通过实例分析、动手实践和小组讨论,掌握排序算法的核心知识,提高编程技能。

同时,关注学生的情感态度价值观的培养,激发学生的学习兴趣和动力。

通过分解课程目标为具体学习成果,为教学设计和评估提供依据。

二、教学内容1. 排序算法原理:- 冒泡排序:介绍冒泡排序的基本思想和步骤,分析其时间复杂度和空间复杂度。

- 选择排序:讲解选择排序的原理和过程,分析其时间复杂度和空间复杂度。

- 插入排序:阐述插入排序的基本原理,分析其时间复杂度和空间复杂度。

2. 排序算法应用:- 编写冒泡排序、选择排序和插入排序的C语言程序。

- 通过实例演示,让学生了解排序算法在实际问题中的应用。

3. 算法分析与优化:- 对比分析冒泡排序、选择排序和插入排序的性能,探讨各种排序算法的优缺点。

大学C语言程序设计大作业题目

大学C语言程序设计大作业题目

1数据处理系统一、软件开发目的该软件主要是使用C语言设计开发数据处理程序,实现对数据的排序、查找、插入、计算、输出等功能。

二、数据结构定义一个11*10的二维数组。

三、软件功能说明1.生成100个随机数:调用库函数rand()或random()产生100个随机数,并存储在二维数组中的前十行。

2.选择法排序:用选择法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

3.冒泡法排序:用冒泡法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

4.插入法排序:用插入法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

5.查找数据:输入待查找数据, 在二维数组中逐个查找,若找到输出数据所在位置的行列号,若无该数值则输出“无此数”。

6.转换二进制:将数组中数据转换为二进制并转存到另一数组中输出。

7.转换为素数之和:对于原数组中的数进行判断:若为偶数,则表示成两个素数的和,并输出。

8.插入数据:输入一个数,将该数插入原数组中,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。

9.删除数据输入一个数,若原数组中存在该数,则删除该数,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。

10.退出系统,结束任务。

四、软件验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。

系统菜单功能项:1生成100个随机数2选择法排序3冒泡法排序4插入法排序5查找数据6转换二进制7转换为素数之和8插入数据9删除数据10退出系统注意:要求每执行一个具体的功能之后,程序将重新显示菜单。

2.系统要有一定的可靠性、稳定性,能够实现各功能模块。

2图书借阅管理系统一、软件开发目的该软件主要是使用C语言设计开发一个简单的图书借阅管理系统,实现对图书的借书,还书的管理和数据统计。

计算机二级MS选择题1

计算机二级MS选择题1

1.下列叙述中正确的是( )。

答案:BA )所谓算法就是计算方法B )程序可以作为算法的一种描述方法C )算法设计只需考虑得到计算结果 D)算法设计可以忽略算法的运算时间 2.下列各序列中不是堆的是( )。

A )(91,85,53,36,47,30,24,12)B )(91,85,53,47,36,30,24,12) C )(47,91,53,85,30,12,24,36) D)(91,85,53,47,30,12,24,36)3.深度为5的完全二叉树的结点数不可能是( )。

答案:AA )15B )16 C)17D )18 4.设二叉树如下:则前序序列为( )。

A )ABDEGCFHB )DBGEAFHC C )DGEBHFCAD )ABCDEFGH5.下列叙述中正确的是( )。

答案:AA )循环队列是顺序存储结构B )循环队列是链式存储结构C )循环队列是非线性结构D )循环队列的插入运算不会发生溢出现象6.下列叙述中正确的是( )。

A )所有数据结构必须有根结点B )所有数据结构必须有终端结点(即叶子结点)C )只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构D )没有根结点或没有叶子结点的数据结构一定是非线性结构7.下列关于算法的描述中错误的是( )。

答案:DA )算法强调动态的执行过程,不同于静态的计算公式B )算法必须能在有限个步骤之后终止C )算法设计必须考虑算法的复杂度D )算法的优劣取决于运行算法程序的环境8.设二叉树如下:则中序序列为( )。

A )ABDEGCFHB )DBGEAFHC C )DGEBHFCAD )ABCDEFGH9.线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有( )。

答案:BA )节省存储空间B )插入与删除运算效率高C )便于查找D )排序时减少元素的比较次数10.深度为7的完全二叉树中共有125个结点,则该完全二叉树中的叶子结点数为( )。

计算机二级MS--office选择题真题试题库(附答案)

计算机二级MS--office选择题真题试题库(附答案)

全国计算机等级考试二级MS Office高级应用选择题真题题库(附答案)数据结构与算法1.算法的有穷性是指()。

答案:AA)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用2.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。

答案:DA)快速排序B)冒泡排序C)直接插入排序D)堆排序3.下列关于栈的叙述正确的是()。

答案:BA)栈按"先进先出"组织数据B)栈按"先进后出"组织数据C)只能在栈底插入数据D)不能删除数据4.一个栈的初始状态为空。

现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。

答案:BA)12345ABCDE B)EDCBA54321C)ABCDE12345 D)54321EDCBA5.下列叙述中正确的是()。

答案:DA)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定6.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。

答案:CA)O(n) B)C)D)7.下列叙述中正确的是()。

答案:AA)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间8.在数据管理技术发展的三个阶段中,数据共享最好的是()。

答案:CA)人工管理阶段B)文件系统阶段C)数据库系统阶段D)三个阶段相同9.下列叙述中正确的是()。

答案:DA)栈是“先进先出”的线性表B)队列是“先进后出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构10.支持子程序调用的数据结构是()。

《三、插入排序》作业设计方案-高中信息技术人教版选修1

《三、插入排序》作业设计方案-高中信息技术人教版选修1

《插入排序》作业设计方案(第一课时)一、作业目标本作业旨在通过实践操作,使学生掌握插入排序的基本概念和实现方法,加深对算法的理解,并能够运用该算法解决实际问题。

同时,通过作业的完成,培养学生的逻辑思维能力和编程实践能力,提高其信息技术应用能力。

二、作业内容1. 理论学习:学生需认真阅读《插入排序》的相关教材内容,理解插入排序的基本原理、步骤及算法流程。

2. 编程实践:学生需使用所学的编程语言(如Python、Java 等),根据所提供的样例代码或思路,自行编写一个完整的插入排序程序。

要求程序能够实现数组的插入排序,并能正确处理边界条件。

3. 代码测试:学生需对自己的插入排序程序进行测试,确保其能够正确运行并输出预期结果。

测试数据应包括不同规模和类型的数组,以验证程序的正确性和效率。

4. 作业提交:学生将编写的程序代码以及测试结果截图等相关材料提交至教师指定的平台或邮箱。

三、作业要求1. 独立完成:本作业需学生独立完成,不得抄袭他人代码或答案。

2. 代码规范:学生编写的代码应符合所使用编程语言的规范,保证代码的可读性和可维护性。

3. 注释清晰:在代码中添加必要的注释,解释关键部分的实现逻辑和作用。

4. 错误处理:程序应具备基本的错误处理能力,能够正确处理边界条件和异常情况。

5. 按时提交:学生需在规定的时间内完成作业并提交,如遇特殊情况需及时与教师沟通。

四、作业评价1. 正确性:评价学生程序是否能够正确实现插入排序功能,输出结果是否准确。

2. 规范性:评价学生代码的规范性、可读性和可维护性。

3. 创新性:鼓励学生尝试使用不同的思路和方法实现插入排序,对于有创新点的学生给予额外加分。

4. 实践能力:评价学生编程实践的能力和解决问题的能力。

五、作业反馈1. 教师批改:教师对学生的作业进行批改,指出存在的问题和不足之处,并给出改进意见。

2. 学生互评:鼓励学生之间进行互评,互相学习和交流,提高解决问题的能力。

C语言程序设计教程第五章练习题题目

C语言程序设计教程第五章练习题题目

单选题1、关于数组的定义与初始化,下列哪一项是错误的()A.int arr[5] = {1,2,3,4,5};B.int arr[] = {1,2,3,4,5};C.int arr[5] = {1,2,3};D.int arr[5] = {1,2,3,4,5,6};2、在定义数组int arr[10]后,下列选项中对arr的引用正确的是()A.arr[10]B.arr[6.3]C.arr(6)D.arr[0]3、在C语言中,引用数组元素时,其数组下标的数据类型允许是()4、若int arr[5] = {1,2,3}; 则arr[2]的值为()5、在执行int arr[][3] = {1,2,3,4,5,6}:语句后,arr[1][0]的值为()6、关于二维数组,下列选项能正确定义并赋初值的是()A.int n = 5,b[n][n];B.int a[1][2] = {{1},{3}};C.int c[2][] = {{1,2},{3,4}};D.int a[3][2] = {{1,2},{3,4}};7、阅读下列程序段:char s[18] = "a book!";printf("%.4s\n", s);其输出结果为()A.a book!B.a bookC.a bo8、阅读下列程序:int a[4][4] = { { 1, 3, 5, }, { 2, 4, 6 }, { 3, 5, 7 } };printf("%d%d%d%d\n", a[0][0], a[1][1], a[2][2], a[3][3]);正确的输出结果为()9、阅读下面程序:int i;int x[4][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };for (i = 0; i<4; i++)printf("%3d", x[i][3 - i]);下列选项中哪一项是正确的输出结果()A.1 5 9 13B.1 6 11 16C.4 7 10 13D.4 8 12 1610、下列描述中不正确的是()。

实验六 内排序

实验六 内排序

实验六内排序一、实验目的和要求通过本次实验,掌握线性表几种的常用排序方法。

二、实验内容和原理C语言结构化程序设计思想,数组的应用。

三、主要仪器设备装有Visual C++/Turbo C++等C程序编译软件的计算机。

四、实验中程序的源码1. 直接插入排序算法程序代码如下:#include <stdio.h>#include "table.h"/*****************************************//* 函数功能:建立待排序的初始数据*//* 函数参数:指针变量t *//* 函数返回值:空*//* 文件名:init.c 函数名:init() *//*****************************************/void init(table *t){int x;t->length=0;/*初始化*/printf("请输入待排序数据的排序码(-999结束):\n");scanf("%d",&x);/*从键盘输入数据*/while(x!=-999) /*假设输入数据为-999则输入结束*/{t->length++;t->r[t->length].key=x;scanf("%d",&x);}}/*除通过键盘接受数据外,也可以通过从数据文件中等方式接受数据*//*这里仅对待排序记录的排序码进行了输入,记录的其他数据没有输入*//*这里假设接受的数据总数不会超过MAXSIZE个,所以没有进行判断是否溢出*//*****************************************//* 函数功能:输出数据*//* 函数参数:结构变量t *//* 函数返回值:空*//* 文件名:display.c 函数名:display() *//*****************************************/void display(table t){int i;for(i=1;i<=t.length;i++) printf("%5d",t.r[i].key);}/********************************************//* 函数功能:直接插入排序算法*//* 函数参数:结构类型table的指针变量tab *//* 函数返回值:空*//* 文件名insesort, 函数名insertsort() *//********************************************/void insertsort(table *tab){int i,j;for(i=2;i<=tab->length;i++)/*依次插入从第2个开始的所有元素*/{j=i-1;tab->r[0]=tab->r[i];/*设置哨兵,准备找插入位置*/while(tab->r[0].key<tab->r[j].key) /*找插入位置并后移*/{tab->r[j+1]=tab->r[j]; /*后移*/j=j-1; /*继续向前(左)查找*/}tab->r[j+1]=tab->r[0]; /*插入第i个元素的副本,即前面设置的哨兵*/ }}void main(){table T;init(&T);insertsort(&T);display(T);printf(“\n”);}2. 直接选择排序算法程序代码如下:#include <stdio.h>#include "table.h"/*****************************************//* 函数功能:建立待排序的初始数据*//* 函数参数:指针变量t *//* 函数返回值:空*//* 文件名:init.c 函数名:init() *//*****************************************/void init(table *t){int x;t->length=0;/*初始化*/printf("请输入待排序数据的排序码(-999结束):\n");scanf("%d",&x);/*从键盘输入数据*/while(x!=-999) /*假设输入数据为-999则输入结束*/{t->length++;t->r[t->length].key=x;scanf("%d",&x);}}/*除通过键盘接受数据外,也可以通过从数据文件中等方式接受数据*//*这里仅对待排序记录的排序码进行了输入,记录的其他数据没有输入*//*这里假设接受的数据总数不会超过MAXSIZE个,所以没有进行判断是否溢出*//*****************************************//* 函数功能:输出数据*//* 函数参数:结构变量t *//* 函数返回值:空*//* 文件名:display.c 函数名:display() *//*****************************************/void display(table t){int i;for(i=1;i<=t.length;i++) printf("%5d",t.r[i].key);}/**************************************************//* 函数功能:直接选择排序算法*//* 函数参数:结构类型table的指针变量tab *//* 函数返回值:空*//* 文件名:selesort.c 函数名:simpleselectsort() *//**************************************************/void simpleselectsort(table *tab){int i,j,k;for(i=1;i<=tab->length-1;i++) /*每次选择一个最小的元素(的位置),和第i个元素交换*/{k=i; /*记下当前最小元素的位置*/for(j=i+1;j<=tab->length;j++) /*向右查找更小的元素*/if(tab->r[j].key<tab->r[k].key) k=j; /*修改当前最小元素的位置*/if(k!=i) /*如果第i次选到的最小元素位置k不等于i,则将第k、i个元素交换*/{tab->r[0]=tab->r[k]; /*以没有用到的第0个元素作为中间单元进行交换*/tab->r[k]=tab->r[i];tab->r[i]=tab->r[0];}}}void main(){table T;init(&T);simpleselectsort(&T);display(T);printf("\n");}3. 冒泡排序算法程序代码如下:#include <stdio.h>#include "table.h"/*****************************************//* 函数功能:建立待排序的初始数据*//* 函数参数:指针变量t *//* 函数返回值:空*//* 文件名:init.c 函数名:init() *//*****************************************/void init(table *t){int x;t->length=0;/*初始化*/printf("请输入待排序数据的排序码(-999结束):\n");scanf("%d",&x);/*从键盘输入数据*/while(x!=-999) /*假设输入数据为-999则输入结束*/{t->length++;t->r[t->length].key=x;scanf("%d",&x);}}/*除通过键盘接受数据外,也可以通过从数据文件中等方式接受数据*//*这里仅对待排序记录的排序码进行了输入,记录的其他数据没有输入*//*这里假设接受的数据总数不会超过MAXSIZE个,所以没有进行判断是否溢出*//*****************************************//* 函数功能:输出数据*//* 函数参数:结构变量t *//* 函数返回值:空*//* 文件名:display.c 函数名:display() *//*****************************************/void display(table t){int i;for(i=1;i<=t.length;i++) printf("%5d",t.r[i].key);}/**************************************************//* 函数功能:冒泡排序算法*//* 函数参数:结构类型table的指针变量tab *//* 函数返回值:空*//* 文件名:bubbsort.c 函数名:bubblesort () *//**************************************************/void bubblesort(table *tab){int i,j,done;i=1;done=1;while(i<tab->length&&done) /*最多进行tab->length次冒泡,如没有发生交换则结束*/ {done=0;for(j=1;j<=tab->length-i;j++)if(tab->r[j+1].key<tab->r[j].key)/*相邻两记录的排序码不符合排序要求,则进行交换*/ {tab->r[0]=tab->r[j]; /*以第0个元素作为中间单元进行交换*/tab->r[j]=tab->r[j+1];tab->r[j+1]=tab->r[0];done=1;}i++;}}void main(){table T;init(&T);bubblesort(&T);display(T);printf("\n");}五、实验结果与分析1. 这里写出第一个程序的结果与分析2. 这里写出第一个程序的结果与分析3. 这里写出第一个程序的结果与分析。

排序算法实验报告

排序算法实验报告

数据结构实验报告八种排序算法实验报告一、实验内容编写关于八种排序算法的C语言程序,要求包含直接插入排序、希尔排序、简单项选择择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。

二、实验步骤各种内部排序算法的比较:1.八种排序算法的复杂度分析〔时间与空间〕。

2.八种排序算法的C语言编程实现。

3.八种排序算法的比较,包括比较次数、移动次数。

三、稳定性,时间复杂度和空间复杂度分析比较时间复杂度函数的情况:时间复杂度函数O(n)的增长情况所以对n较大的排序记录。

一般的选择都是时间复杂度为O(nlog2n)的排序方法。

时间复杂度来说:(1)平方阶(O(n2))排序各类简单排序:直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlog2n))排序快速排序、堆排序和归并排序;(3)O(n1+§))排序,§是介于0和1之间的常数。

希尔排序(4)线性阶(O(n))排序基数排序,此外还有桶、箱排序。

说明:当原表有序或基本有序时,直接插入排序和冒泡排序将大大减少比较次数和移动记录的次数,时间复杂度可降至O〔n〕;而快速排序则相反,当原表基本有序时,将蜕化为冒泡排序,时间复杂度提高为O〔n2〕;原表是否有序,对简单项选择择排序、堆排序、归并排序和基数排序的时间复杂度影响不大。

稳定性:排序算法的稳定性:假设待排序的序列中,存在多个具有相同关键字的记录,经过排序,这些记录的相对次序保持不变,则称该算法是稳定的;假设经排序后,记录的相对次序发生了改变,则称该算法是不稳定的。

稳定性的好处:排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。

基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。

另外,如果排序算法稳定,可以防止多余的比较;稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序四、设计细节排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

C语言实现插入排序

C语言实现插入排序

插入排序概述有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为⊙(㎡)。

是稳定的排序方法。

插入算法(insertion sort)把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。

在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的正确位置中。

#include <stdio.h>#include <stdlib.h>void output(int a[], int n);int main(){int a[100] = {0};int n = 0, i = 0, k = 0, j = 0;char x;printf("请向容器中输入从小到大的数\n");while(scanf("%d", &a[i]) == 1){k++, i++;if (k == 100){printf("容器已满,不能继续插入.\n");exit(-1);}}output(a, k);fflush(stdin);while(k <= 100){printf("输入你想插入的数:");fflush(stdin);scanf("%d", &n); //插入排序if (a[i-1] < n){ //如果当前的数比容器中最后的数大a[i++] = n; //直接插在容器的最后面k++; //容器的个数加1}else{for (j = i-1; j >= 0; j--){ //查找将要插入的合适的位置if (a[j] > n){ //如果当前的数比插入的数大a[j+1] = a[j]; //容器的数位置后移}else{break; //当前的数比插入的数要小}}a[j+1] = n; //则插入到当前位置i+1的位置k++;i++;}output(a, k);if (k == 100){printf("容器已满,不能继续插入。

c语言各种排序法详解

c语言各种排序法详解

一插入排序1.1 直接插入排序基本思想:每次将一个待排序额记录按其关键码的大小插入到一个已经排好序的有序序列中,直到全部记录排好序。

图解:代码实现:[cpp]view plaincopy1.//直接顺序排序2.void InsertSort(int r[],int n)3.{4.for(int i=2;i<n;i++)5.{6.r[0]=r[i];//设置哨兵7.for(int j=i-1;r[0]<r[j];j--)//寻找插入位置8.r[j+1]=r[j];//记录后移9.r[j+1]=r[0];10.}11.for(int k=1;k<n;k++)12.cout<<r[k]<<"";13.cout<<"\n";14.}1.2 希尔排序基本思想是:先将整个待排序记录序列分割成若干个子序列,在在序列内分别进行直接插入排序,待整个序列基本有序时,再对全体记录进行一次直接插入排序。

图解:代码实现:[cpp]view plaincopy1.<spanstyle="font-size:14px;">//希尔排序2.void ShellSort(int r[],int n)3.{4.int i;5.int d;6.int j;7.for(d=n/2;d>=1;d=d/2)//以增量为d进行直接插入排序8.{9.for(i=d+1;i<n;i++)10.{11.r[0]=r[i];//暂存被插入记录12.for(j=i-d;j>0&&r[0]<r[j];j=j-d)13.r[j+d]=r[j];//记录后移d个位置14.r[j+d]=r[0];15.}16.}17.for(i=1;i<n;i++)18.cout<<r[i]<<"";19.cout<<"\n";20.}</span>二交换排序2.1 起泡排序起泡排序是交换排序中最简单的排序方法,其基本思想是:两两比较相邻记录的关键码,如果反序则交换,直到没有反序的记录为止。

内部排序C程序

内部排序C程序

1.简单插入排序截图:2.折半插入排序截图:3.快速排序截图:4.直接选择排序截图:5.堆排序截图:源程序清单如下:/*类型的定义*/#define MAXSIZE 20#define LT(a,b) ((a)<(b))#include <stdio.h>#include <conio.h>typedef int KeyType;typedef int InfoType;typedef struct{KeyType key;InfoType otherinfo;}RedType;typedef struct{RedType r[MAXSIZE+1];int length;}SqList;void InsertSort(SqList *L){ /*简单插入排序*/ int i,j;for(i=2;i<=L->length;++i){if(LT(L->r[i].key,L->r[i-1].key)){L->r[0]=L->r[i];for(j=i-1;LT(L->r[0].key,L->r[j].key);j--){L->r[j+1]=L->r[j];}L->r[j+1]=L->r[0];}}}void BInsertSort(SqList *L){ /*折半插入排序*/int i,j;int low,high,m;for(i=2;i<=L->length;++i){L->r[0]=L->r[i]; /*将R[i]暂存到R[0]*/low=1;high=i-1;while(low<=high){ /*在R[low..high]中折半查找插入的位置*/ m=(low+high)/2;if(LT(L->r[0].key,L->r[m].key)){high=m-1; /*插入点在低半区*/}else{low=m+1; /*插入点在高半区*/}}for(j=i-1;j>=high+1;--j){ /*记录后移*/L->r[j+1]=L->r[j];}L->r[high+1]=L->r[0]; /*插入*/}}int Partition(SqList *L,int low,int high){ /*快速排序*/int pivotkey;L->r[0]=L->r[low]; /*用子表的第一个记录作枢轴记录*/pivotkey=L->r[low].key; /*枢轴记录关键字*/while(low<high){while(low<high&&L->r[high].key>=pivotkey){--high;}L->r[low]=L->r[high]; /*将比枢轴记录小的记录移到低端*/while(low<high&&L->r[low].key<=pivotkey){++low;}L->r[high]=L->r[low]; /*将比枢轴记录大的记录移到高端*/ }L->r[low]=L->r[0];return low;}void QSort(SqList *L,int low,int high){int pivotloc;if(low<high){pivotloc=Partition(L,low,high); /*将L.r[low..high]一分为二*/QSort(L,low,pivotloc-1); /*对低子表递归排序,pivotloc是枢轴位置*/QSort(L,pivotloc+1,high); /*对高子表递归排序*/}}void QuickSort(SqList *L){ /*对记录序列进行快速排序*/ QSort(L,1,L->length);}int SelectMinKey(SqList L,int i){ /*简单选择排序*/int k;int j;k=i;for(j=i;j<L.length+1;j++){if(L.r[k].key>L.r[j].key){k=j;}}return k;}void SelectSort(SqList *L){ /*简单选择排序*/RedType t;int i,j;for(i=1;i<L->length;++i){ /*选择第i小的记录,并交换到位*/j=SelectMinKey(*L,i); /*在R[i..n]中选择key最小的记录*/if(i!=j){t=L->r[i];L->r[i]=L->r[j];L->r[j]=t;} /*与第i个记录交换*/}}typedef SqList HeapType;void HeapAdjust(HeapType *H,int s,int m){ /*堆排序*/RedType rc;int j;rc=H->r[s];for(j=2*s;j<=m;j*=2){ /*沿key较大的孩子结点向下筛选*/if(j<m&&LT(H->r[j].key,H->r[j+1].key)){++j; /*j为key较大的记录的下标*/}if(!LT(rc.key,H->r[j].key)){break; /*rc应插入在位置s上*/}H->r[s]=H->r[j];s=j;}H->r[s]=rc; /*插入*/}void HeapSort(HeapType *H){RedType t;int i;for(i=H->length/2;i>0;--i){ /*把R[1..n]建成大顶堆*/HeapAdjust(H,i,H->length);}for(i=H->length;i>1;--i){/*将堆顶记录和当前未经排序子序列R[1..i]中最后一个记录相互交换*/t=H->r[1];H->r[1]=H->r[i];H->r[i]=t;HeapAdjust(H,1,i-1); /*将R[1..i-1]重新调整为大顶堆*/}}void main(){int i,k,num;SqList s;printf("请输入待排序序列的个数:\n");scanf("%d",&num);printf("请输入序列中的元素:\n");for(i=1;i<=num;i++){scanf("%d",&s.r[i].key);}s.length=i-1;printf("\n\t1,简单插入排序\n\t2,折半插入排序\n\t3,快速排序\n\t4,直接选择排序\n");printf("\t5,堆排序\n\t按1,5选择操作\n");scanf("%d",&k);switch(k){case 1: InsertSort(&s);break;case 2: BInsertSort(&s);break;case 3: QuickSort(&s);break;case 4: SelectSort(&s);break;case 5: HeapSort(&s);break;default: printf("您没有选择一个操作。

常用C语言排序算法解析

常用C语言排序算法解析

常用C语言排序算法解析摘要:排序是计算机科学中最重要的研究问题之一,也是学习C语言程序设计过程中重点研究问题之一。

主要介绍了顺序比较法、选择排序法、冒泡排序法、改进的冒泡排序法和直接插入排序法,并从排序算法的思想、模拟排序执行过程、实现排序的算法代码及算法性能分析4个方面进行了详细的解析,可以帮助C语言初学者轻松理解几种常用的排序算法。

关键词:C语言;排序;算法思想;数组在数据处理中,数据排序是相当重要的,它可以使数据更有条理,方便数据的处理。

排序是程序设计的常见问题,解决排序问题也有多种算法,常用的算法有顺序比较排序法、选择排序法、冒泡排序法、直接插入排序法、快速排序和希尔排序法等排序算法。

在学习C语言程序设计过程中排序算法也是重点研究问题之一,本文主要用C 语言来描述几种常见的排序算法,以及分析实现算法的基本思路、模拟相应算法实现排序的过程及算法性能分析。

文中所涉及的排序均为升序排序。

1 顺序比较排序法1.1 算法思想假设数组有n个元素,从第一个元素开始为第一趟,第一个元素和第二个元素开始到第n个元素按顺序作比较,如果第一个元素大于某个元素则第一个元素和该元素进行交换,第一个元素和其后的n1个元素一一进行两两比较结束后将是所有元素中的最小值。

接下来第二趟从第二个元素开始逐一和其后的n2个元素两两比较,在进行n2次比较后第二个元素将是剩下n1个元素中的最小值。

依次类推一直到第n1趟最后两个元素进行比较并得到第n1个元素是剩下的两个元素中的较小值。

1.2 模拟排序执行过程假设一个整型数组有5个元素,分别为23、12、5、16、10,排序执行过程如下所示:第一趟:23 12 5 16 10 (第一趟比较前元素)第一次:122351610(由于23>12 两元素交换)第二次:523121610(由于12>5 两元素交换)第三次:523121610(由于5<16 两元素不交换)第四次:523121610(由于5<10 两元素不交换)第二趟:523121610(第二趟比较前元素)第一次:512231610(由于23>12 两元素交换)第二次:512231610(由于12<16 两元素不交换)第三次:510231612(由于12>10 两元素交换)第三趟:510231612(第三趟比较前元素)第一次:510162312(由于23>16 两元素交换)第二次:510122316(由于16>12 两元素交换)第四趟:510122316(第四趟比较前元素)第一次:510121623(由于23>16 两元素交换)1.3 实现顺序比较排序法核心代码for(i=0;i<4;i++)//外循环控制排序趟数,n个数排n1趟for(j=i+1;j<5;j++)//内循环控制每趟比较的次数,第i趟比较ni次if(a[i]>a[j])//如果当前趟的第一个元素大于当前元素,则进行交换{t=a[i];a[i]=a[j];a[j]=t;}1.4 算法性能分析有n个元素参加排序要进行n1趟比较,第i趟要进行ni次两两比较。

《C语言程序设计》期末程序设计练习题库_12月11日更新

《C语言程序设计》期末程序设计练习题库_12月11日更新

9、输入一串字符,以回车键作为结束,统计出其中英文字母、数字和其他字符的个数。
10.编程计算 2!+4!+6!+8!+10!+12!+14!+16!+18!+20!,并输出结果。
第 4 章 数组
1、采用“冒泡法”对任意输入的 10 个整数按由小到大的顺序排序。算法过程必须小的数向上冒,也就是第 一遍扫描结束,最小的数组元数放在 a[0],第二遍扫描结束,次小的数组元数放在 a[1]。要求程序代码完 整,程序在运行过程中输入 10 个整数,10 个整数一行输入,每个整数输入时空一个空格;在排序算法处理 后,按由小到达的顺序输出,输出也一行输出,每个整数之间空一个空格。
3、编写函数 fun,该函数的功能是:求出整型数组 a 中 N 个数值的平均值,并将大于平均值 的整数放入数组 b 中,数组 b 中的个数作为函数值返回。在 main 函数中,输入 N 个整数,调 用 fun 函数,最后输出这 N 个整数中所有大于平均值的整数,每行输出 5 个数。 4、数组元素作为函数参数,任输入10个三位数,计算有多少个数其各位数字和是5 5、用递归法求 n!
6、请编写一个函数完成将用户输入的一串整型数字字符转换为整型数值, 例如用户输入串”567”, 应该能 返回整数值 567。在 main()函数中接收用户输入的数字,调用函数进行转换,并输出转换后的结果(必须是 输出整型) 。 7、请编写一函数 strcpy,函数原型声明为:void strcpy(char* target, char *src); 能实现将字符串 src 拷贝到字符数组 target。 在 main()函数中接收用户输入的一个字符串 (不超出 256 个字符) , 调用 strcpy 函数将其复制到一个数组中,并输出字符数组的内容。 8、请编写一函数 getFileExtName,函数原型声明为:char *getFileExtName(char *filename);能实现返 回传入文件名的扩展名,例如用户传入的文件名为”d:\\finalexame\\exam.c”,函数返回字符串”c”。 在 main()函数中接收用户输入的一个文件名(含路径) ,调用函数获取其扩展名,并输出的结果。 9、请编写一函数 strcmp,函数原型声明为:int strcmp(char *str1, char *str2);能实现两个串的大小 比较,若 str1 比 str2 大返回 1,若 str1 等于 str2 返回 0,若 str1 小于 str2 返回-1。在 main()函数中接 收用户输入的两个字符串,调用 strcmp 函数进行比较,并输出比较的结果。 10. 请编写一函数 draw,函数原型声明为:void drawPyramid(int level);能实现绘制 level 层高度的金 字塔。例如,输入层高为 12,输出如下的图形

c语言中的插入排序法

c语言中的插入排序法

c语言中的插入排序法插入排序法是一种简单的排序算法,也是一种较为常见的排序算法之一。

它使用了类似于打扑克牌的方式,每次将一个待排序的元素插入到已经排好序的序列中的适当位置中,最终得到一个有序的序列。

具体步骤如下:1. 从第一个元素开始,该元素可以认为已经被排序2. 取出下一个元素,在已经排序的元素序列中从后向前扫描3. 如果已排序元素序列中的当前元素大于新元素,将该元素移到下一位置4. 重复步骤3,直到找到已排序元素小于或等于新元素的位置5. 将新元素插入到该位置后6. 重复步骤2~5这样,在每一次循环中,将待排序的元素插入到已经排序完成的有序序列中,直到所有元素都被插入完毕,最终得到一个完整的有序序列。

下面是一份C语言插入排序的示例代码:```C#include<stdio.h>void insertion_sort(int arr[], int len){int i, j, temp;for(i=1; i<len; i++){temp = arr[i];for(j=i-1; j>=0 && arr[j]>temp; j--)arr[j+1] = arr[j];arr[j+1] = temp;}}在这个程序中,我们定义了一个`insertion_sort()`函数,用于实现插入排序。

我们将待排序的数组传递给该函数以及数组的长度,函数会将数组排序后返回一个排好序的数组。

在插入排序中,内部循环语句是关键。

在每次循环中,我们将数组中的一个待排序元素`temp`拿出来,再对已经排序完成的元素序列进行扫描,找到合适的位置进行插入,最终得到排好序的数组。

插入排序的时间复杂度为O(n^{2}),在排序较小的数据集时表现良好,在数据规模较大时性能会急速下降。

程序设计算法

程序设计算法

程序设计算法程序设计算法简介程序设计算法是指在计算机程序设计过程中用于解决特定问题的一组方法或步骤,这些方法或步骤是由程序员根据问题需求所设计的。

程序设计算法涉及到多种方法和技巧,包括排序、查找、递归、贪心、动态规划、分治和回溯等。

下面就分别介绍各种算法的特点和应用。

排序算法排序是程序设计中最常用的算法之一。

排序算法有简单选择排序、直接插入排序、快速排序和归并排序等。

排序算法的基本思想是将一组无序的数据按照某种顺序进行排列,以更加方便的进行查找和操作。

排序算法在各种场合都被广泛使用,比如搜索引擎中对搜索结果排序、数据库中对表格数据排序、实时系统中对数据流排序等。

查找算法查找算法是指在一组数据中找到特定数据的过程,通常称为搜索。

查找算法的主要类型有线性查找、二分查找、哈希查找和树搜索等。

它们适用于不同类型的数据和特定场景,比如线性查找适用于数量不大的无序表,而二分查找适用于有序表。

递归算法递归是指方法中调用自己的过程,通常被用于解决复杂问题。

递归算法的主要特点是简短的代码和简单的思路。

递归算法通常被用于树的遍历、排序和分析等场景中。

贪心算法贪心算法的基本思想是从问题的某个初始解出发逐步地对该解进行修改或更新,直到达到最优解。

贪心算法的应用场景包括背包问题、最小生成树、最短路径等。

贪心算法看似简单,但是如果特定场景中没有恰当的贪心策略,贪心算法就很容易无法得到最优解。

动态规划算法动态规划算法通常被用来解决具有最优子结构和重复子问题的复杂问题。

其基本思想是将问题分解成若干个子问题,利用子问题重叠的性质,避免重复计算,最终得到最优解。

动态规划算法被用于解决如背包问题、最长公共子序列、最短路径等场景。

分治算法分治算法是指将一个大问题拆分成若干个小问题,然后对小问题进行解决,并将小问题的结果合并成大问题的解决方案。

分治算法通常被用于解决排序问题、快速傅里叶变换、矩阵乘法等场景。

回溯算法回溯算法通常被用于解决排列、组合和迷宫问题等。

计算机二级选择填空题

计算机二级选择填空题

一、选择题(1) 下面叙述正确的是(C)A. 算法的执行效率与数据的存储结构无关B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对(2) 以下数据结构中不属于线性数据结构的是(C)A. 队列B. 线性表C. 二叉树D. 栈(3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得A. 8B. 16C. 32D. 15(4) 下面描述中,符合结构化程序设计风格的是(A)A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B. 模块只有一个入口,可以有多个出口C. 注重提高程序的执行效率D. 不使用goto语句(5) 下面概念中,不属于面向对象方法的是 (D) 注:P55-58A. 对象B. 继承C. 类D. 过程调用(6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B)A. 可行性分析B. 需求分析C. 详细设计D. 程序编码(7) 在软件开发中,下面任务不属于设计阶段的是(D)A. 数据结构设计B. 给出系统模块结构C. 定义模块算法D. 定义需求并建立系统模型(8) 数据库系统的核心是(B)A. 数据模型B. 数据库管理系统C. 软件工具D.数据库(9) 下列叙述中正确的是(C)A.数据库是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题D.数据库系统中,数据的物理结构必须与逻辑结构一致(10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108A. 内模式B. 外模式C. 概念模式D. 逻辑模式(11) 算法的时间复杂度是指(C)A. 执行算法程序所需要的时间B. 算法程序的长度C. 算法执行过程中所需要的基本运算次数D. 算法程序中的指令条数(12) 算法的空间复杂度是指(D)A. 算法程序的长度B. 算法程序中的指令条数C. 算法程序所占的存储空间D. 算法执行过程中所需要的存储空间(13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出A. 349B. 350C. 255D. 351(14) 结构化程序设计主要强调的是(B)A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性(15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) 注:即第一个阶段A. 概要设计B. 详细设计C. 可行性分析D. 需求分析(16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。

它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫面,找到相应位置并插入。

插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后移动,为最新元素提供插入空间。

1#include <stdio.h>
2#include "CreateData.c" //生成随机数的函数
3#define ARRAYLEN 10 //需要排序的数据元素数量
4
5void InsertSort(int a[], int n)
6{
7 int i,j,t;
8 for(i=1;i<n;i++)
9 {
10 t=a[i]; //去除一个未排序的数据
11 for(j=i‐1;i>=0 && t<a[j];‐‐j) //在排序序列中查找位置
12 a[j+1]=a[j]; //向后移动数据
13 a[j+1]=t; //插入数据到序列
14 }
15}
16
17int main()
18{
19 int a,a[ARRAYLEN]; //定义数组
20 for(i=0;i<ARRAYLEN;i++) // 清空数组
21 a[i]=0;
22 if(!CreateData(a,ARRAYLEN,1,100)) //判断生成随机数是否成功
23 {
24 printf("生成随机数不成功!\n");
25 getch();
26 return 1;
27 }
28 printf("原数据:"); //输出生成的随机数
29 for(i=0;i<ARRAYLEN;i++)
30 printf("%d ",a[i]);
31 printf("\n");
32 InsertSort(a,ARRAYLEN); //调用插入排序函数
33 printf("排序后:");
34 for(i=0;i<ARRAYLEN;i++) //输出排序后的结果
35 printf("%d ",a[i]);
36 printf("\n");
37 getch();
38 return 0;
39}。

相关文档
最新文档