用选择法对10个整数排序

2020-12-18 13:34

阅读:514

标签:clu   选择排序   index   lang   循环   printf   10个   控制   技术   

用选择法对10个整数排序

【答案解析】

选择排序原理:

总共两个循环,外循环控制选择的趟数,内循环控制具体选择的方式。

用maxPos标记区间中首元素位置,然后用后序元素依次与maxPos标记的元素进行比较,如果有元素大于maxPos位置的元素,用maxPos标记该元素的位置,直到区间的末尾。

该趟选择完成后,即找到该区间中最大元素,如果maxPos标记的最大元素不在区间末尾,用maxPos位置元素与区间末尾的元素进行交换。

继续新一趟选择,直到区间中剩余一个元素

技术图片

【代码实现】

#include
int main()
{
	int array[] = {2,8,3,9,5,7,1,4,0,6};
	int size = sizeof(array) / sizeof(array[0]);
	// 输出原数组
	printf("排序前数组中数据为:");
	for (int i = 0; i  array[maxPos])
				maxPos = j;
		}

		// 如果最大元素不在区间末尾时,将最大元素与区间末尾元素交换
		if (maxPos != size - i - 1)
		{
			int temp = array[maxPos];
			array[maxPos] = array[size - i - 1];
			array[size - i - 1] = temp;
		}
	}

	// 输出原数组
	printf("选择排序后数组中数据为:");
	for (int i = 0; i 

【结果截屏】

技术图片

优化:既然一趟选择能找到最大的元素,那么也可以找到最小的元素,因此在一趟中可以找到最小和最大两个元素,最小元素放在区间左侧,最大元素放在区间右侧,可以减少选择的趟数。

#include
int main()
{
	int array[] = {2,8,3,9,5,7,1,4,0,6};
	int size = sizeof(array) / sizeof(array[0]);
	// 输出原数组
	printf("排序前数组中数据为:");
	for (int i = 0; i  array[maxPos])
				maxPos = index;

			if (array[index] 

用选择法对10个整数排序

标签:clu   选择排序   index   lang   循环   printf   10个   控制   技术   

原文地址:https://www.cnblogs.com/vs2019/p/13385470.html


评论


亲,登录后才可以留言!