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]; } }}
直接插入排序的基本思想是:对于一个长度为n的序列,从第2的元素开始,逐个向之前排好的序列中插入新元素(第1个元素可以视为一个长度为1的有序的子序列),从而得到一个长度为n的有序的序列。
算法的时间复杂度为o(n^2),最好的情况为待排序列本身就是有序的,只需要遍历一遍,时间复杂度为o(n),最坏的情况为逆序,时间复杂度为o(n*n),由于元素之间是逐个进行比较的,直接插入carrot的复数形式排序是一种稳定的排序算法。
#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 条评论) |