首页 > 作文

C语言直接插入排序算法

更新时间:2023-04-04 10:45:16 阅读: 评论:0

目录
1.算法模板2.算法介绍3.实例总结

1.算法模板

void inrtsort(sqlist *l){    int j;    for (int i = 2; i <= l->length; i ++ ) {        if (l->arr[i] < l->arr[i-1])        {            l->arr[0] = l->arr[i];  // 设置哨兵            for (j = i - 1; l->arr[j] > l->arr[0]; j -- )                l->arr[j + 1] = l->arr[j];            l->arr[j + 1] = l->arr[0];        }    }}

2.算法介绍

直接插入排序的基本思想是:对于一个长度为n的序列,从第2的元素开始,逐个向之前排好的序列中插入新元素(第1个元素可以视为一个长度为1的有序的子序列),从而得到一个长度为n的有序的序列。

算法的时间复杂度为o(n^2),最好的情况为待排序列本身就是有序的,只需要遍历一遍,时间复杂度为o(n),最坏的情况为逆序,时间复杂度为o(n*n),由于元素之间是逐个进行比较的,直接插入carrot的复数形式排序是一种稳定的排序算法。

3.实例

#include <iostream>using namespace std;const int n = 100;typedef struct{    int arr[n];    int length;} sqlist小学生学习心得;void inrtsort(sqlist *l){    int j;    for (int i = 2; i <= l->length; i ++男性毛孔粗大怎么办 ) {        if (l->arr[i] < l->arr[i-1])        {            l->arr[0] = l->arr[i];  // 设置哨兵            for (j = i - 1; l->arr[j] > l->arr[0]; j -- )                l->arr[j + 1] = l->arr[j];       余世维有效沟通     l->arr[j + 1] = l->arr[0];        }    }}int main(){    sqlist l;    l.arr[1] = 50;    l.arr[2] = 10;    l.arr[3] = 90;    l.arr[4] = 30;    l.arr[5] = 70;    l.arr[6] = 40;    l.arr[7] = 80;    l.arr[8] = 60;    l.arr[9] = 20;    l.length = 9;    inrtsort(&l);    for (int i = 1; i <= l.length; i ++ )        cout << l.arr[i] 工作收入证明范本<< " ";}

总结

到此这篇关于c语言直接插入排序算法的文章就介绍到这了,更多相关c语言插入排序内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 10:45:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/50152a29136d450a146308921e160551.html

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

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

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

标签:算法   序列   复杂度   哨兵
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图