码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序

时间:2015-04-26 01:12:31      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

  才开始看算法导论,准备边看边做下笔记,文采不好,希望大家谅解。本人小菜一枚,绝对有很多不对之处,希望大家指出。

如果你觉得插入排序总是记不住,你可以借助一个比较形象的例子:比如你可以把它想象成你斗地主的时候,一张一张的拿牌,从右往左插牌,左边都是插好的(类似于已经排好序的)
技术分享

伪代码如下:
INSERTION_SORT(A)
for j=1 to A.length
key=A[j]
i=j-1;
while i>=0&&A[i]>key
A[i+1]=A[i]
i-=1

A[i+1]=key

程序实现如下;
1
#include <iostream> 2 using namespace std; 3 4 void insertSort(int a[],int n){ 5 //int n=sizeof(a)/sizeof(int); 6 // cout<<n; 7 for(int i=1;i<n;i++){ 8 int j=i-1; 9 int temp=a[i]; 10 while(j>=0&&a[j]>temp){// a[j]>temp 是从小到大排序。如果改成a[j]<temp则是从大到小排序 11 a[j+1]=a[j]; 12 j-=1; 13 } 14 a[j+1]=temp; 15 } 16 } 17 18 int main(){ 19 int a[]={5,2,1,7,3,4,6}; 20 int n=sizeof(a)/sizeof(int); 21 insertSort(a,n); 22 for(int i=0;i<n;i++){ 23 cout<<a[i]<<" "; 24 } 25 return 0; 26 }
注意!!!

最开始我声明的函数为
void insertSort(int a[]){
 5     //int n=sizeof(a)/sizeof(int);
.........
总是出不来结果,原来C++数组作为参数传递虽然是地址传递,但是最开始只传递了第一个元素的地址。则通过
int n=sizeof(a)/sizeof(int) 求出来 n始终是1;所以C++用数组最为参数传递时候,最好还是带一个数组大小的参数;


 

插入排序

标签:

原文地址:http://www.cnblogs.com/small-snail/p/4457137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!