排序思路:将待排序的数组分成两个数组,左边是有序数组,右边时无序数组(一般左边第一个元素arr[0],自成一个有序数组,毕竟只有一个元素),然后将无序数组的第一个数据插入到有序的数组当中去。于是有序的数组越来越大,等到无序的数组中的所有的元素都插入到了有序的数组中的时候,排序就完成了。
代码的实现:
/*insertSort*/
for(int i=1; i<N;i++){
/*保存待插入元素*/
int insertVal=arr[i];
/*保存待插入位置索引*/
int insertIndex=i;
/*待插入元素与前一个元素比较*/
while(insertVal<=arr[insertIndex-1] && insertIndex>=1){
/*若前面还有元素,且大于待插入元素,向后移*/
arr[insertIndex]=arr[insertIndex-1];
/*更新待插入位置索引*/
insertIndex--;
}
/*插入元素*/
arr[insertIndex]=insertVal;
}