目录
描述
优化
注意事项
解决办法
代码
描述
找到最大的数放在最右端
或
找到最小的数放在最左端
优化
在遍历中同时寻找最大与最小的数
这样可以在一次遍历结束后同时交换两个值,提升效率
注意事项
一般情况下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--;}elsebreak;}arr[end + 1] = tmp;}
}