Insertion_Sort(插入排序)
来源:互联网 发布:苹果破解软件论坛 编辑:程序博客网 时间:2024/06/08 09:27
自己编一遍。。。防止遗忘,同时增加熟练度。罗列下来自百科的算法描述和基本步骤
算法描述
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置 ⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 ⒌ 将新元素插入到下一位置中 ⒍ 重复步骤2伪代码
INSERTION-SORT(A) 1 forj← 2 tolength[A] 2 dokey← A[j] 3 Insert A[j] into the sorted sequence A[1..j-1]. 4 i← j-1 5 whilei>0 and A [i] >key 6 do A [i+1] ← A [i] 7 i ← i-1 8 A[i+1] ← key/********************************************** Author: Wan KaiMing** Date: 2012-11-01-21.18 星期四*********************************************///////////插入排序(从小到大的排序)//////最好情况:O(n) 最坏情况:O(n^2) 稳定的排序//////原理:取定一个key,首先保证<该元素之前的为有序>,然后从后往前遍历,key<a[j]则往前继续找/////// 同时a[j]后移,直到找到自己的位置#include<iostream>#include<string>using namespace std;int main(){ int a[]={9,8,7,6,5,4,3,2,1}; int i; int key; cout<<"未经排序的数组为:"; for(i=0;i<9;i++) cout<<a[i]<<' '; cout<<endl; for(i=1;i<9;i++){ key=a[i]; //这是一个常量 int j=i-1; //j在i前一个位置开始 while(j>=0&&key<a[j]){ //如果k比前面的小并且j>0那么前面的元素一次后移,包括j=0的情况 a[j+1]=a[j]; --j; } a[j+1]=key; } cout<<endl; cout<<"经插入排序的数组为:"; for(i=0;i<9;i++) cout<<a[i]<<' '; cout<<endl; return 0;}
- 插入排序(insertion_sort)详解
- Insertion_Sort(插入排序)
- 插入排序 insertion_sort
- 【算法】插入排序 insertion_sort
- 插入排序(INSERTION_SORT)
- 2.1 插入排序(insertion_sort)
- 排序算法之插入排序<Insertion_Sort>及其C语言代码实现
- insertion_sort
- insertion_sort
- insertion_sort
- Insertion_sort
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- struts2 Map<String,Object>session心得 浅析
- 【Linux】Linux文件被删除后的恢复方法
- 中缀表达式转后缀式的RPN算法
- 特殊线性表学习笔记
- 变量名前加$符号就可以声明全局变量了
- Insertion_Sort(插入排序)
- 四年Java 一个java程序员的年终总结
- 好像不错
- POJ 1279 Art Gallery(半平面交)
- java.sql.SQLException:ORA-00923:未找到要求的From
- C语言实现模拟键盘按键事件
- css
- arp.c
- C++中的volatile关键字