排序算法(二)--选择排序法

约定:

  1. 假设数据中有n个数据元素(关键字)。排列算法中,将序列中各关键字值依次存放于类型为keytype的数组元素K[1], K[2], K[3], …, K[n]中。
  2. 排序结果按照数据元素(关键字)值的大小,从小到大排序。

核心思想: 第 i 趟排序从序列的后 n-i+1 ( i = 1, 2, …, n-1 ) 个元素中选择一个值最小的元素与该 n-i+1 个元素的最前面那个元素交换位置,即与整个序列的第 i 个位置上的元素交换位置。如此下去,直到 i = n-1, 排序结束。
每一趟排序从序列中未排好序的那些元素中选择一个值最小的元素,然后将其与这些未排好序的元素的第 1 个元素交换位置。

void SELECTSORT(keytype K[], int n)
{
	int i, j, d;
	keytype temp;
	for (i=1; i<=n-1; i++) {
		d = i;					// 假设值最小元素为未排序元素的第1个元素
		for (j=i+1; j<=n; j++)
			if (K[j]<K[d])
				d = j;			// 寻找真正值最小元素,记录其位置d
		if (d != i) {			// 当值最小元素非第一个元素时
			temp = K[d];
			K[d] = K[i];
			K[i] = temp;		// 值最小元素与第一个元素交换位置
		}
	}
}
发布了18 篇原创文章 · 获赞 0 · 访问量 2527

猜你喜欢

转载自blog.csdn.net/weixin_36465540/article/details/104213176
今日推荐