八大排序算法之(一)插入排序 直接插入排序

来源:互联网 发布:李炎恢php 百度网盘 编辑:程序博客网 时间:2024/05/18 19:44
直接插入排序算法原理:当插入第i(i>=1)个元素时,前面的V[0],…,V[i-1]等i-1个 元素已经有序。这时,将第i个元素与前i-1个元素V[i-1],…,V[0]依次比较,找到插入位置即将V[i]插入,同时原来位置上的元素向后顺移。在这里,插入位置的查找是顺序查找。直接插入排序是一种稳定的排序算法,其实现如下:
void Directinsertionsort(T& Srcarray){int count = sizeof(Srcarray) / sizeof(Srcarray[0]) ;for (int i = 1; i < count; i++) {for (int j = i; j > 0; j--) {    if (Srcarray[j]  < Srcarray[j - 1]){  int temp = Srcarray[j];Srcarray[j] = Srcarray[j - 1];Srcarray[j - 1] = temp;}}}return;}int main(){int a[5] = { 1, 2, 3, 7, 6 };Directinsertionsort(a);for (int i = 0; i < 5; i++){cout << a[i] << endl;}return 0;}
时间复杂度:最好清醒为o(n),平均情况o(n^2),最差O(n^2)
空间复杂度:O(1)
算法稳定,排序过程中数据完全在内存中
原创粉丝点击