void inssort(int *A, int n, int incr) { for(int i = incr; i < n; i += incr) for(int j = i; (j >= incr) && (A[j] < A[j - incr]); j -= incr) swap(A[j], A[j - incr]); }

时间: 2023-06-23 10:10:05 浏览: 33
这是一个简单的插入排序算法,用于对数组A进行排序。该算法的基本思路是将数组分为已排序和未排序两部分,每次从未排序部分中取出一个元素,在已排序部分中找到合适的位置插入该元素,使得已排序部分依然保持有序。incr参数表示步长,即每次选取未排序部分中的元素时,跳过incr个元素。这样可以提高排序的效率,特别是对于大规模数据比较有用。
相关问题

请将代码中的InsSort、ShellSort 、SelectSort、QKSort四个函数的函数体补充完整。代码如下: //直接插入排序 void InsSort(int r[], int length) /* 对记录数组r做直接插入排序,length为数组中待排序记录的数目*/ { /*添加代码*/ } /* InsSort */ //希尔排序 void ShellSort(int r[], int length, int delt[], int n) /*对记录数组r做希尔排序,length为数组r的长度,delta 为增量数组,n为delta[]的长度 */ { int i; /*添加代码 for(i=0 ; i<=n-1; ++i) */ } //简单选择排序 void SelectSort(int r[], int length) /*对记录数组r做简单选择排序,length为数组的长度*/ { /*添加代码*/ } /* SelectSort */ //快速排序 void QKSort(int r[],int low, int high ) /*对记录数组r[low..high]用快速排序算法进行排序*/ { int pos; if(low<high) { /*添加代码*/ } }

//直接插入排序 void InsSort(int r[], int length) { int i, j, temp; for(i=1; i<length; ++i) { temp = r[i]; for(j=i-1; j>=0 && r[j]>temp; --j) { r[j+1] = r[j]; } r[j+1] = temp; } } //希尔排序 void ShellSort(int r[], int length, int delt[], int n) { int i, j, k, gap, temp; for(k=0; k<n; ++k) { gap = delt[k]; for(i=gap; i<length; ++i) { temp = r[i]; for(j=i-gap; j>=0 && r[j]>temp; j-=gap) { r[j+gap] = r[j]; } r[j+gap] = temp; } } } //简单选择排序 void SelectSort(int r[], int length) { int i, j, min, temp; for(i=0; i<length-1; ++i) { min = i; for(j=i+1; j<length; ++j) { if(r[j] < r[min]) { min = j; } } if(min != i) { temp = r[i]; r[i] = r[min]; r[min] = temp; } } } //快速排序 void QKSort(int r[], int low, int high) { int i = low, j = high, pivot = r[low]; while(i < j) { while(i < j && r[j] >= pivot) { --j; } if(i < j) { r[i++] = r[j]; } while(i < j && r[i] <= pivot) { ++i; } if(i < j) { r[j--] = r[i]; } } r[i] = pivot; if(low < i-1) { QKSort(r, low, i-1); } if(i+1 < high) { QKSort(r, i+1, high); } }

#include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 typedef int KeyType; typedef int OtherType; typedef struct { KeyType key; OtherType other_data; }RecordType; void InsSort(RecordType r[], int length) { int i,j; for (i=2; i<=length; i++) { r[0]=r[i]; j=i-1; while (r[0].key< r[j].key ) { r[j+1]= r[j]; j=j-1; } r[j+1]=r[0]; } } void sift(RecordType r[], int k, int m) { RecordType t; int i,j; int x; int finished; t= r[k]; x=r[k].key; i=k; j=2*i; finished=FALSE; while( j<=m && !finished ) { if (j<m && r[j].key< r[j+1].key ) j=j+1; if ( x>= r[j].key) finished=TRUE; else { r[i] = r[j]; i=j; j=2*i; } } r[i] =t; } void crt_heap(RecordType r[], int length ) { int i,n; n= length; for ( i=n/2; i >= 1; --i) sift(r,i,n); } void HeapSort(RecordType r[],int length) { int i,n; RecordType b; crt_heap(r, length); n= length; for ( i=n ; i>= 2; --i) { b=r[1]; r[1]= r[i]; r[i]=b; sift(r,1,i-1); } } int main() { int i,j; RecordType r[20]; int len; printf("请输入待排序记录的长度:"); scanf("%d",&len); for(i=1;i<=len;i++) { printf("请输入第%d个记录元素:",i); fflush(stdin); scanf("%d",&j); r[i].key = j; } for(i=1;i<=len;i++) printf("%d ",r[i].key); printf("\n"); InsSort(r,len); for(i=1;i<=len;i++) printf("%d ",r[i].key); printf("\n"); HeapSort(r,len); for(i=1;i<=len;i++) printf("%d ",r[i].key); printf("\n"); return 0; }分别补充希尔排序和快速排序算法

补充希尔排序算法: ```c void ShellSort(RecordType r[], int length) { int i, j, gap; RecordType temp; for (gap = length / 2; gap > 0; gap /= 2) { for (i = gap; i < length; i++) { temp = r[i]; for (j = i - gap; j >= 0 && r[j].key > temp.key; j -= gap) { r[j + gap] = r[j]; } r[j + gap] = temp; } } } ``` 补充快速排序算法: ```c int Partition(RecordType r[], int low, int high) { RecordType pivot = r[low]; while (low < high) { while (low < high && r[high].key >= pivot.key) { high--; } r[low] = r[high]; while (low < high && r[low].key <= pivot.key) { low++; } r[high] = r[low]; } r[low] = pivot; return low; } void QuickSort(RecordType r[], int low, int high) { if (low < high) { int pivotpos = Partition(r, low, high); QuickSort(r, low, pivotpos - 1); QuickSort(r, pivotpos + 1, high); } } ```

相关推荐

最新推荐

recommend-type

2024华为OD机试D卷 - 最多购买宝石数目 - 免费看解析和代码.html

私信博主免费获取真题解析以及代码
recommend-type

华为OD机试D卷 - 小朋友来自多少小区 - 免费看解析和代码.html

私信博主免费获取真题解析以及代码
recommend-type

C51单片机的示例-课程实验-LCD1602基础开发库-内含源码和说明书.zip

C51单片机的示例-课程实验-LCD1602基础开发库-内含源码和说明书.zip
recommend-type

毕业设计 基于Python+Django+itemCF和userCF算法音乐推荐系统源码+详细文档+全部数据资料 高分项目

【资源说明】 毕业设计 基于Python+Django+itemCF和userCF算法音乐推荐系统源码+详细文档+全部数据资料 高分项目 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
recommend-type

setuptools-51.3.1-py3-none-any.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。