石家庄高端网站建设,潍坊专业空心活塞杆,毕业设计成品网站,杭州vi设计策划引言
插入排序就是将一个序列中第一个元素#xff0c;认为是有序数组#xff0c;该数组含一个元素#xff0c;剩下的元素构成一个无序数组#xff0c;将无序数组中元素逐一与有序数组中最后一个元素开始向前比较#xff0c;根据具体的从大到小的顺序或者从小到大的顺序认为是有序数组该数组含一个元素剩下的元素构成一个无序数组将无序数组中元素逐一与有序数组中最后一个元素开始向前比较根据具体的从大到小的顺序或者从小到大的顺序若元素需按从小到大的顺序排列则当无序数组中的元素小于有序组数中元素时将有序数组该元素往后移动一位无序数组中该元素赋值到该有序数组的位置上按此方法有序数组中元素的值再增加无序数组中元素的值减少。 如例3162按从小到大排序。实现插入排序时将第一个元素3作为有序数组其余元素162作为无序数组用无序数组中的第一个元素1与有序数组中的最后一个元素3比较13,将3后移一位1放到3原来的位置上有序数组变为13无序数组为62将无序数组中的元素6与有序数组从最后一位开始向前比较63,不用移动位置由于按照从小到大的顺序排列此时不需再与有序数组中元素向前比较此时有序数组136无序数组只有一个元素2将无序数组中元素2与有序数组136从最后一位向前比较遇到比2小的元素则停止本轮比较26,将6向后移动一位2赋值给6之前所在的位置用2与3比较23,将3往后移动一位将2赋值给3之前所在的位置接着用2与1比较21,不需要做任何操作此时无序数组已经逐一比较结束有序数组为1236。
示例
基于vs2010的控制台应用程序下面是代码 insertSort.cpp
// insertSort.cpp : 定义控制台应用程序的入口点。
//#include stdafx.h
#include stdlib.h
#include iostreamusing namespace std;/************************************************************************/
/* 功能插入排序 从小到大 25361功能函数void insertSort(int *parr,int n) 插入排序void printParr(int *parr,int n) 输出数组元素*/
/************************************************************************/void insertSort(int *parr,int n)
{for(int i 1; i n; i){int temp parr[i];//采用中间变量temp否则会覆盖for( int j i-1;j 0; --j){if(temp parr[j]){parr[j 1] parr[j];//后移parr[j] temp;}else{break;}}}
}void printParr(int *parr,int n)
{for(int i 0; i n; i){coutparr[i]\t;}
}int _tmain(int argc, _TCHAR* argv[])
{int arr[] {2,5,3,6,1};printParr(arr,5);coutendl;insertSort(arr,5);printParr(arr,5);coutendl;system(pause);return 0;
}程序的结构如下
运行效果