1. 原理
插入排序是顾名思义是将未进行排序的元素不断插入到已排序序列中的排序方法。如下图所示:
插入排序说白点就是在以排序的序列中找到未排序元素的位置,并将元素插入行程新的已排序序列的过程。
2.排序过程及算法设计
排序过程
以一个实际的例子为例:
设有序列{7,9,6,12,15,11},使用插入排序对上述的序列按从小到大进行排序,排序的过程可描述如下:
算法设计
插入排序是将元素插入已排序序列的过程,排序过程需要将元素与已排序的序列元素进行对比,采用从后往前的对比顺序,不断向前移动,直到不能向前移动为止,此时当前的位置就是要插入元素所属的位置。如对元素6进行插入排序,排序的过程如下图所示:
其余所有元素的排序过程与上述过程类似。
3. C++源码
1 #include "stdafx.h" 2 3 #include <iostream> 4 5 using namespace std; 6 7 void insection_Sort(int *values,int length){ 8 9 for(int i=0;i<length;i++){ 10 11 int currentValue = *(values+i); //currentValue表示要插入元素的值 12 13 int index=i-1; //index表示要与插入元素currentValue对比的元素的下标 14 15 while(currentValue<*(values+index)&&index>=0){ 16 17 *(values+index+1)=*(values+index); //若当前位置的元素比插入元素要大,将当前元素向后移一位 18 19 index--; 20 21 } 22 23 *(values+index+1)=currentValue; //此时index表示插入元素的下表,对该位置复制currentValue 24 25 } 26 27 }
时间: 2024-10-13 21:28:58