直接选择排序

直接选择排序和直接插入排序类似,都将数据分为有序的区域和无序的区域。所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后(其实是将找到的最小元素与已排序序列紧邻的元素交换,从而使得已排序序列增大1)。

void Swap(int &a, int &b) {
	int tmp = a;
	a = b;
	b = tmp;
}
void SelectSort(int a[], int size) {
	int i;
	for (i = 0; i < size; ++i) {
		int min_index = i;
		int j;
		for (j = i + 1; j < size; ++j)
			if (a[j] < a[min_index])
				min_index = j;
		Swap(a[i], a[min_index]);
	}
}

该排序算法用到了交换两个数的函数。参考这里查看面试题“不借助其他变量,交换两个数”

文章导航