首页 > 其他分享 >插入排序——C语言描述

插入排序——C语言描述

时间:2023-03-14 23:22:05浏览次数:60  
标签:Arr int 插入排序 C语言 ------- ---------- Test 22% 描述

插入排序——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 定义

​ 将要排序的元素插入前面的有序序列。

注意:

① 外层循环:从第二个元素开始,对每个元素进行操作;

② 先找到一个元素比前一个元素小的元素;

③ 内存循环,移动前面的有序序列,直到出现比要插入的元素小的元素出现;

④ 插入要排序的元素。

2 代码

/*InsertSort*/
void InsertSort(int *Arr, int Num) {
	int i = 0;
	int j = 0;
	int Tmp;

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

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

			Arr[j + 1] = Tmp;
		}
	}
}

4 测试用例

void TestCmpArr(int *CmpArr, int Num, int *Arr) {
	int Index = 0;
	int CmpNum = 0;

	TestNum++;

	for (Index = 0; Index < Num; ++Index) {
		if (CmpArr[Index] == Arr[Index]) {
			CmpNum++;
		}
	}

	if (CmpNum != Num) {
		printf("Incorrect!\n");
		FaildNum++;
	}
	else {
		printf("Correct!\n");
		PassNum++;
	}
}

/*TestInsertSort*/
void TestInsertSort(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");
	InsertSort(Arr01, Num01);
	PrintArr(Arr01, Num01);
	TestCmpArr(CmpArr01, Num01, Arr01);

	/*Test02*/
	printf("\n-------Test 02----------\n");
	InsertSort(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

Correct!

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

Arr[0] = 0

Correct!

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

Print test result;

TestNum = 2, PassNum = 2, FaildNum = 0

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

相关文章

  • C语言
    01-C语言概述 C语言概述1.什么是C语言C语言就是人和计算机交流的一种语言语言是用来交流沟通的。有一方说,有另一方听,必须有两方参与,这是语言最重要的功能:说的一方......
  • 数据结构-C语言
    一、基本定义1、数据数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据结构:是相互之间存在一种或多种特定关系......
  • 【排序算法】插入排序
    1 前言今天把排序的几个算法过一下,这节我们看一下插入排序,简单的来说就是从第2个元素往前寻找位置进行插入,我们看示例。2 代码示例/***插入排序*从第2个元素......
  • Linux & 标准C语言学习 <DAY13>
    一、字符串  字符:类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号  串:是一种数据结构,存储类型相同的若干个数据,对于串型结构......
  • C语言代码规范
    一、问题引入初入编程世界,我们不知道什么叫做好代码。一切以实现功能和快速上线项目为主,但编程经验增加,发现代码越来越难写,越来越难改。导致这样的原因是没有遵循一般性......
  • 选择排序——C语言描述
    选择排序——C语言描述目录选择排序——C语言描述0测试用例框架1定义2代码4测试用例0测试用例框架https://blog.csdn.net/m0_59469991/article/details/127137119?......
  • C语言中的数据类型
    1、整型(1)short短整型(内存中占2个字节)是shortint的简写。取值范围:-32768~+32767(2Bytes)。(2)int整形(int)(内存中占4字节)取值范围:-2147483648~+2147483647(4......
  • C语言指针进阶(一)
    前言什么是指针?指针就是一个可以存储地址的变量。当我们将具体的某个对象的地址存放到某个指针变量当中时,我们可以说将某个对象的地址存放到某个指针当中,也可以说指向某个对......
  • 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;......
  • Linux & 标准C语言学习 <DAY11>
    一、指针  1、什么是指针    指针是一种特殊的数据类型,使用指针可以定义指针变量,指针变量存储的是整形数据,该数据代表了内存的编号(地址),可以通过这个编号......