简单插入排序的思想:
整体思想就是,从未排序的部分一次取元素,并把取好的元素插入到前面已排序部分的适当位置,直到所有元素都被插入到已排序部分中。(注:刚开始时,已排序部分只有一个元素(第一个元素))。
简单插入排序的操作方法:
从数组第二位开始到末尾取元素,与前面排好序的部分进行比对,比对时要从排好序部分的前面往后比较。找到插入位置后,用一个临时变量保存待插入的元素,然后从插入位置开始,把原排好序的数组整体移动一位(把插入位置空开)。最后把这个临时变量赋值给插入位置。
简单插入排序的代码实现:
//以排序字符串中的字符为例:
string InsertSort(string str)
{
int i, j, k;
for (i = 1; i < str.size(); i++)//数组第二位开始到末尾取元素
{
for (j = 0; j <= i - 1; j++)//与前面排好序的部分进行比对,
//比对时要从排好序部分的前面往后比较
{
if (str[i] <= str[j])//找到插入位置后
{
char temp = str[i];//用一个临时变量保存待插入的元素
for (k = i - 1; k >= j; k--)//从插入位置开始,
str[k + 1] = str[k]; //把原排好序的数组整体移动一位
//(把插入位置空开)
str[j] = temp; //最后把这个临时变量赋值给插入位置
break;//结束里层循环,准备把下一个元素插入到排好序的数组中。
}
}
}
return str;
}