个人技术分享

目录

描述

优化

注意事项

解决办法

代码


描述

找到最大的数放在最右端

找到最小的数放在最左端

优化

在遍历中同时寻找最大与最小的数

这样可以在一次遍历结束后同时交换两个值,提升效率

注意事项

一般情况下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;
	}
}