美文网首页C++和数据结构
插入排序(初级算法中速度最快的)

插入排序(初级算法中速度最快的)

作者: 朱宏飞 | 来源:发表于2019-06-30 19:53 被阅读0次

//插入排序

核心思想:先将一个数拿出去,然后在和里面的数值相比较。

#include <iostream>

using namespace std;

template <class T>  //函数模板,不需考虑数据类型

void InsertionSort(T *a,int n);

int main(){

    int x[]={3,2,1,4,5,8,0,3,1};

    double a[]={3.0, 2,1, 4.5, 5,8,0,3,1};

    InsertionSort(x,9);

    for(int i=0;i<9;++i){

    cout<<x[i]<<endl;

}

return 0;

}

template <class T>

//函数模板,不需考虑数据类型

void InsertionSort(T *a,int n){

int in,out;

//out=0这个数出去

for(out=1;out<n;++out){

int t=a[out];//注意这里

in=out;

while(in>0&&a[in-1]>=t) {

a[in]=a[in-1];

    --in;

}

a[in]=t;

}

}

//改进算法//浪费了一个空间

void InsertionSort_2(int *a,int n){

//a[0]用来保存排序使用,不能保存原始数据

for(int j=2;j<=n;++j){

int temp=a[j];

a[0]=temp;

int i=j-1;

while(temp<a[i]){

a[i+1]=a[i];

i--;

}

a[i+1]=temp;

}

}

插入排序步骤简化版(原创)

相关文章

  • 插入排序(初级算法中速度最快的)

    //插入排序 核心思想:先将一个数拿出去,然后在和里面的数值相比较。 #include using namespa...

  • 算法——初级排序算法

    最近,在通过《算法4》这本书来重新学习一下算法,从最初级的排序算法。初级的排序算法有3种:选择排序、插入排序、希尔...

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

  • 插入排序之折半插入排序

    基本思路:折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中...

  • Java常见的排序算法

    几种常见排序算法的时间复杂度 由此可见,在最好情况下,插入排序和冒泡排序最快,在平均情况下,快速排序最快,最坏情况...

  • Java排序算法分析与实现------插入排序

    一、原理 插入排序是简单排序中最快的排序算法,插入排序时间复杂度为O(n*n) 把n个待排序的元素看成一个无序...

  • 七种基于比较的排序,基于Java实现,收藏一下?

    一.总览 二.基于比较的排序算法 1.简单插入排序(重点) 注意:区间较小时,最快 原理: 一组数据array[]...

  • 【初级排序算法】插入排序

    插入排序将一个元素插入到已经有序的数组中的适当位置,使新的数组还是有序。插入排序中,当前索引左边的所有元素都是有序...

  • 《剑指Offer》查找和排序

    快速排序 在各种基于关键码比较的内排序算法中,快速排序是实践中平均速度最快的算法之一。算法的基本思想是划分,即按照...

  • #2 归并排序算法的简单分析

    简介 归并排序是一种使用分治策略的排序算法,相比于之前介绍的插入排序算法,分治算法在数据量较大的场景中速度要快很多...

网友评论

    本文标题:插入排序(初级算法中速度最快的)

    本文链接:https://www.haomeiwen.com/subject/qhzbcctx.html