首页 > 其他分享 >选择排序——C语言描述

选择排序——C语言描述

时间:2023-03-13 22:47:05浏览次数:48  
标签:Arr int 22% C语言 ------- ---------- Test 排序 描述

选择排序——C语言描述

目录

0 测试用例框架

https://blog.csdn.net/m0_59469991/article/details/127137119?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127137119%22%2C%22source%22%3A%22m0_59469991%22%7D

1 定义

​ 将序列中最小或者最大的元素选出来放到最前面去。

注意:

① 使用下标进行迭代,而不是使用值。

② 外层循环条件是i < Num – 1;只需要对前n – 1个元素操作即可;内层循环因为要对所有元素比较,所以结束条件是j < Num,起始条件为i + 1,因为已经保证较小(或较大)的都在前面了。

2 代码

/*SelectSort*/
void SelectSort(int *Arr, int Num) {
	int i = 0;
	int j = 0;;
	int MinIndex;

	if ((Arr == NULL) || (Num <= 1)) {
		return ;
	}

	for (i = 0; i < Num - 1; ++i) {
		MinIndex = i;
		for (j = i + 1; j < Num; ++j) {
			if (Arr[j] < Arr[MinIndex]) {
				MinIndex = j;
			}
		}

		if (i != MinIndex) {
			Swap(&Arr[i], &Arr[MinIndex]);
		}
	}
}

4 测试用例

/*TestSelectSort*/
void TestSelectSort(void) {
	/*Test01: Normal*/
	int Arr01[] = { 1, 3, 2, 5, 4, 0 };
	int Num01 = 6;
	int CmpArr01[] = { 0, 1, 2, 3, 4, 5 };

	/*Test02: Only 1 Mem*/
	int Arr02[] = { 0 };
	int Num02 = 1;
	int CmpArr02[] = { 0 };


	printf("-------Test start----------\n");
	InitNum();

	/*Test01*/
	printf("\n-------Test 01----------\n");
	SelectSort(Arr01, Num01);
	PrintArr(Arr01, Num01);
	TestCmpArr(CmpArr01, Num01, Arr01);

	/*Test02*/
	printf("\n-------Test 02----------\n");
	SelectSort(Arr02, Num02);
	PrintArr(Arr02, Num02);
	TestCmpArr(CmpArr02, Num02, Arr02);

	/*Test Result*/
	printf("\n-------Test result----------\n");
	TestResult();
}

打印结果

-------Test start----------

-------Test 01----------

Arr[0] = 0

Arr[1] = 1

Arr[2] = 2

Arr[3] = 3

Arr[4] = 4

Arr[5] = 5

-------Test 02----------

Arr[0] = 0

-------Test result----------

Print test result;

TestNum = 2, PassNum = 2, FaildNum = 0

标签:Arr,int,22%,C语言,-------,----------,Test,排序,描述
From: https://www.cnblogs.com/meditatorss/p/17213207.html

相关文章

  • 冒泡排序
    原理比较相邻的两个数,如果前面的数比后面大,则交换两个数的位置,最后得到最大的数排在最后一位,这样最后一位就有序了。剩下的数再次比较,得到第二大的数排在倒数第二位,......
  • C语言中的数据类型
    1、整型(1)short短整型(内存中占2个字节)是shortint的简写。取值范围:-32768~+32767(2Bytes)。(2)int整形(int)(内存中占4字节)取值范围:-2147483648~+2147483647(4......
  • C语言指针进阶(一)
    前言什么是指针?指针就是一个可以存储地址的变量。当我们将具体的某个对象的地址存放到某个指针变量当中时,我们可以说将某个对象的地址存放到某个指针当中,也可以说指向某个对......
  • 课程表数据录入、课程分类接口、所有课程接口(过滤,排序)、课程详情接口(没有章节和课时
    目录1课程表数据录入2课程分类接口2.1路由2.2序列化类2.3视图类3所有课程接口(过滤,排序)3.1表模型3.2序列化类3.3视图类3.4路由4课程详情接口(没有章节和课时的......
  • java基础-排序算法&&二维数组
    1、冒泡排序--升序原理:每次比较相邻两数小的交换到前面每轮结束后最大的数交换到最后口诀:冒泡排序速记口诀(升序)n个数字来排队......
  • js 排序
    冒泡排序原理:数组中的数据前后两两进行对比,如果后面一个数据小于前面一个则进行交换。/***冒泡排序*@param{array}arr*/functionbubbleSort(arr=[]){......
  • c语言二维数组如何转成一维使用
    //直接操作a,比如a[0]得到{0,1,2,3},a[1]得到{4,5,6,7},a[2]得到{8,9,10,11}inta[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};int*p1=a;......
  • Oracle 随机排序
    方法:SELECTT.*FROMTABLETORDERBYDBMS_RANDOM.VALUE(0,100);ORDERBYDBMS_RANDOM.VALUE(0,100),为结果集的每一行计算一个随机数,DBMS_RANDOM.VALUE(0,100)......
  • Linux & 标准C语言学习 <DAY11>
    一、指针  1、什么是指针    指针是一种特殊的数据类型,使用指针可以定义指针变量,指针变量存储的是整形数据,该数据代表了内存的编号(地址),可以通过这个编号......
  • Qz学算法-数据结构篇(排序算法--基数、总结)
    基数排序1.基本介绍基数排序(radixsort)属于“分配式排序”(distributionsort),又称“桶子法”(bucketsor)或binsort,顾名思义,它是通过键值的各个位的值,将安排序的元素分......