原理如上图,代码如下:这里就说明一点:在搜插入点时,是从位置i-1开始向前搜索,在搜索的过程中同时调整了数组中元素,
实现代码如下:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <ctime>
using namespace std ;
int* array = NULL ;
void get_rand_num(int ** parray , int len) //生成一个随机数组
{
srand((unsigned int )time(NULL)) ; //下种子
*parray = new int[len] ;
for(int i = 0 ; i < len ; i++)
{
(*parray)[i] = rand() % len ;
}
}
void insert_sort(int *array , int len )
{
if(len <= 1|| array ==NULL ) //朴素情况检查
return ;
int temp = 0 ;
for(int i = 1 ; i < len ; i++)
{
temp = array[ i ] ;
int j = i -1 ;
while( j >= 0 )
{
if(array[ j ] > temp ) //如果array[ j ]和temp构成逆序则将array[ j ]向后移动一个位置
{ array[ j + 1] = array[ j ] ; j-- ; }
else
break ; //如果array[j]和temp构成第一个“正序”则跳出.
}
array[ j + 1 ] = temp ; //将temp的值插入到array[j+1]的位置
}
}
int main(int argc , char** argv)
{
int len = 50 ;
get_rand_num(&array , len) ;
cout<<"before sort"<<endl ;
for(int i = 0 ; i < 50 ; i++)
{
cout<<"array["<<i<<"]="<<array[i]<<endl ;
}
insert_sort(array , len ) ;
cout<<"after sorting"<<endl ;
for(int i = 0 ; i < len ; i++)
{
cout<<"array["<<i<<"]="<<array[i]<<endl ;
}
delete []array ; array = NULL ;
system("pause") ;
return 0 ;
}
本文介绍了一种简单的排序算法——插入排序,并提供了详细的C++实现代码。通过生成随机数组并使用插入排序进行排序,展示了算法的工作过程。代码中详细解释了如何从当前位置向前搜索并调整数组元素,最终实现有序排列。
6865

被折叠的 条评论
为什么被折叠?



