目录
描述
找到最大的数放在最右端
或
找到最小的数放在最左端
优化
在遍历中同时寻找最大与最小的数
这样可以在一次遍历结束后同时交换两个值,提升效率
注意事项
一般情况下4个位置,left,right,max,min是会撞上的
这样就会导致同一个位置被交换两次导致无序
解决办法
拿先交换left和min
将max与left进行比较
如果max和left相等
则原来max的值被换到了min位置上
我们需要将max的值修改为min
代码
void insertsort(int* arr, int sum) {
int i, end,tmp;
for (i = 0; i < sum - 1; i++) {
tmp = arr[i + 1];
end = i;
while (end >= 0) {
if (arr[end] >tmp) {
arr[end + 1] = arr[end];
end--;
}
else
break;
}
arr[end + 1] = tmp;
}
}