1.题目
插入排序
2.数据结构与算法
数据结构:List
algorithm:插入排序,从左至右扫描,将当前元素插入至前缀中合适的位置
3.源代码
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <list>
#include <algorithm>
using namespace std;
void insertSort(list<int> &l){
if(l.size() == 1)
return;
list<int>::iterator p = l.begin();
list<int>::iterator head = --l.begin();
p++;
while(p != l.end()){
//查找不大于元素*p的最大元素的位置q
list<int>::iterator q = p;
while(q != head){
q--;
if (*q <= *p || q == head) break; //注意处理边界情况
}
l.insert(++q, 1, *p);
l.erase(p++);
}
}
int main()<

本文探讨了插入排序算法,重点分析了其在不同情况下的时间复杂度,包括最好情况的ο(n),最坏情况的ο(n2),以及从逆序对角度得出的平均时间复杂度ο(n2)。同时,文章强调了插入排序的稳定性,并指出它是Input-Sensitive的算法。
最低0.47元/天 解锁文章
614

被折叠的 条评论
为什么被折叠?



