从头学算法之-插入排序
来源:互联网 发布:光明至尊魅影皮肤淘宝 编辑:程序博客网 时间:2024/05/22 15:09
以前学习排序,从冒泡排序开始,依次接触了插人排序,选择排序,快速排序,合并排序,而这些排序从最简单的开始,都运用了不同的算法方法,比如brute-force,divide-and-conquer,Decrease-and-conquer。以前对插入排序的印象不深,代码也总是记不住,今天从书上看到Decrease-and-conquer,这种思想,重新理解了插入排序在这种方法下的流程。废话少说,给出原书的伪代码以便理解。
Algorithm InsertionSort(A[0...n-1])
//Sorts a given array by insertion sort
//Input:An array A[0...n-1] of n orderable elements
//Output:Array A[0...n-1] sorted in nondecreasing order
for i<-1 to n-1 do
v<-A[i]
j<-i-1
while j>=0 and A[j]>v do
A[j+1]<-A[j]
j<-j-1
A[j+1]<-v
当然我自己也写了源码,以供参考
/*insert sort*/#include<iostream>#include<stdlib.h>using namespace std;void swap(int &a,int &b){int temp;temp=a;a=b;b=temp;}void InsertSort(int a[],int n){int v=0,i=0,j=0;for(i=1;i<=n-1;++i) { v=a[i]; j=i-1; while(j>=0&&a[j]>v) { a[j+1]=a[j]; j=j-1; a[j+1]=v; } } }
int main(){const int array_size=5;int a[5]={5,8,3,2,1};cout<<"The given array is:"; for(int i=0;i<5;++i)cout<<a[i]<<' '; cout<<endl;InsertSort(a,5);cout<<"The sorted array is:"; for(int i=0;i<5;++i)cout<<a[i]<<' '; cout<<endl;return 0;}
0 0
- 从头学算法之-插入排序
- 【从头开始学算法】选择排序 插入排序 冒泡排序
- 从头学算法之-分治法-快速排序
- 【从头开始学算法】快速排序
- 【从头开始学算法】归并排序
- 算法重头学-插入排序
- 菜鸟学算法之--插入排序
- <菜鸟学算法-A排序(插入排序)>
- 从头开始学算法
- 算法之插入排序
- 算法之插入排序
- 算法之插入排序
- 算法之插入排序
- 算法之插入排序
- 算法之插入排序
- 算法之插入排序
- 算法之插入排序
- 算法之----插入排序
- 利用Jenkins实现系统集成测试的自动运行
- unity3d动态加载脚本
- 的广告歌
- COM线程模型 - COM服务端(STA组件)创建线程
- 搜索剪枝问题
- 从头学算法之-插入排序
- 《C++语言的设计和演化》 学习笔记
- Android WeakReference与SoftReference
- C++ __int64 类型
- IOS 图片拉伸技巧
- 三十功名尘与土——资深程序员生涯自白
- 单例类。
- java 文件格式转换工具
- Html5中自定义data特性