数组选择排序

选择排序的规则是让第 i 个元素分别于后边的元素进行比较,记录最小的元素的位置,遍历完成之后,进行交换。将数组中每一个元素进行处理后最终得出有序的数据。其交换步骤图如下(摘自 传智播客 教师课件):

2015-06-07_224448

【实现代码】

void select_sort(int* arr, int len)
{
	// 选择排序
	int swap;
	// 外循环,i 的长度要小于总长度 - 1,最后一个值剩下的值一定是最大的
	for (int i = 0; i < len - 1; i++)
	{
		// swap,用来记录最小值的下标,初始化让其等于 i
		swap = i;
		for (int j = i + 1; j < len; j++)
		{
			// 判断 j 下标的值是否小于 swap 下标的值
			if (arr[j] < arr[swap])
				// 如果小于则让 swap 重新记录当前最小下标 j 的值
				swap = j;
		}

		// 如果 swap 与 i 相等证明位置没有移动过,所以不需要交换数据,否则交换
		if (swap != i)
		{
			arr[i] = arr[i] ^ arr[swap];
			arr[swap] = arr[i] ^ arr[swap];
			arr[i] = arr[i] ^ arr[swap];
		}
	}
}

 

说说你的想法