直接插入排序
2014-04-30 18:00
141 查看
基本思想
插入排序的基本思想就是:每次将一个待排序的记录,按照其关键字大小插入到已经排好序的子序列的适当位子,知道全部记录插入完成为止。
假设待排序的记录都存储在R
中,首先把R[1]自成一个有序区,R[2..n]为无序区,然后将R[2..n]中的记录依次插入到R[1..i]中,直到生成含有n个记录的有序区。
在插入的某一中间时刻,存在两个区,一个是R[1..i-1]有序区,一个R[i..n]无序待排序的区。
代码:
/*********************************************** 直接插入排序算法 insert_sort.cpp Created by Summer_ZJU 2014.04.30 Copyright (c) 2014 ZJU.All rights reserved. ************************************************/ #include<iostream> #include <iomanip> using namespace std; void insert_sort(int a[],int n)//插入排序、升序 { int temp; int i,j; for (i=1;i<n;i++)//a[0]是第一个有序区的值,所以从a[1]开始 { temp=a[i];//哨兵 j=i-1; while (j>=0 && temp<a[j]) { a[j+1]=a[j];//将关键字大于temp的记录后移一位 j--;//顺序往前遍历 } a[j+1]=temp;//将关键字插入正确的位置 } } int main() { int arr[]={3,1,5,4,2,9,7,8,6}; int len=sizeof(arr)/sizeof(arr[0]);//计算数组中元素的个数 cout<<"原数组序列:"<<endl; for (int i=0;i<len;i++) cout<<arr[i]<<" "; cout<<endl<<"插入排序后:"<<endl; insert_sort(arr,len); for (int i=0;i<len;i++) cout<<arr[i]<<" "; cout<<endl; system("pause"); return 0; }运行结果:
相关文章推荐
- linux中rpm.bin文件与bin文件的区别
- unity3D游戏开发实战原创视频讲座系列7之消消乐游戏开发
- 实现DotA的技能冷却效果
- SQL DELETE 语句
- hive
- android selector 用法
- SQL UPDATE 语句
- 先占
- 先占
- 先占
- 先占
- Android.mk的写法
- linux 下创建查看添加删除用户组
- YAMAHA地磁传感器YAS532B应用小记
- 粒子系统----实现下雪效果
- SQL INSERT INTO 语句
- hdu 3413 poj 3778 Single CPU, multi-tasking
- 设计模式(二)简单工厂与策略模式
- 组合模式及C++代码实现
- 博客迁移