首页 > 作文

C语言之直接插入排序算法的方法

更新时间:2023-04-04 04:46:35 阅读: 评论:0

目录
一、什么是直接插入排序二、代码讲解总结

直接 插入排序 (straight inrtion sort)是一种最简单的排序方法,寂寞不痛其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。.

废话不多说先看看代码

#define  _crt_cure_no_warnings 1//直接插入排序法#includ鲁班发明了什么东西e <stdio.h>void compare(int arr[], int len){int i = 0;for (i = 0; i < len-1; i++)//len减一因为要插入的数是i+1{int m = i;//记录有序列表最后应该元素下标int num = arr[i + 1];//要插入的数while (m >= 0){if (num < arr[m])//继续比较{arr[m + 1] = arr[m];//交换数值m--;}el{break;}}arr[m + 1] = num;}}int main(){int arr[] = { 2,3,4,1,2,34,4,56,3,434,4 };int len = sizeof(arr) / 4;int i = 0;compare(arr,len);for (i = 0; i < len; i++){printf("%d ", arr[i]);}return 0;}

一、什么是直接插入排序

就像玩扑克时相同,假设前n-1项是有序数列,现在将第n项插入其中,使得前n项有序。然后依次进行插入,直到将整个数列全部插入,排序完成。

对于一组数据我们无法得知是否有序,但第一个元素只有一个,所以是有序的,所以将第一个元素作为第一个有序数列。后面的数值依次插入其中·。

二、代码讲解

void compare(int arbanzhurenr[], int len)

首先创建一个插入排序的函数,需要传入数组和数据个数,因此创建int arr[],int len两个形参。

void compare(int arr[], int len){int i = 0;for (i = 0; i < len糯米饭团的做法-1; i++)//len减一因为要插入的数是i+1{int m = i;//记录有序列表最后应该元素下标int num = arr[i + 1];//要插入的数while (m >= 0){if (num < arr[m])//继续比较{arr[m + 1] = arr[m];//交换数值m--;}el{break;}}arr[m + 1] = num;}}

因为插入排序是由前一个和后一个数据进行比较的,所以比较次数为(数据个数-1)。

int m = i;//记录有序列表最后应该元素下标int num = arr[i + 1];//要插入的数

这里需要前后两个数据比较,且这两个需要比较的数据是变化的,所以创建表示两个数据的变量。

while (m >= 0){if (num < arr[m])//继续比较{arr[m + 1] = arr[m];//交换数值m--;}el{break;}}arr[m + 1] = num;

利用循环进行比较,如果后一个数比前一个数小,就交换位置(数值)。如果后一个数比前一个数更大,break跳出循环。

当每一次循环比较到最后一次时,需要将两个数进行最后的交换,因为之前只是将arr[m]的值赋给了arr[m+1],此时需要将arr[m+1]的值赋给arr[m]才算完成数值交换,否则会出现比较数据丢失和重复的问题。此时的m–了的,所以需要m+1得到所需要的数据下标进行交换。

总结

本篇文章就到这里了,希望能够给你带来高尔夫规则帮助,也希望您能够多多关注www.887551.com的更多内容!

本文发布于:2023-04-04 04:46:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/455252c62410a689ed992ee1eeccf9e5.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C语言之直接插入排序算法的方法.doc

本文 PDF 下载地址:C语言之直接插入排序算法的方法.pdf

下一篇:返回列表
标签:数值   个数   数据   下标
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图