算法导论2-1-1

本文通过具体实例介绍了插入排序算法的实现过程,并对其排序过程进行了详细说明。同时,文中提供了代码实现,有助于读者理解算法细节,加深对排序算法的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闲来无事,看了下算法导论,发现还是有写点东西的必要,因为这本书解答不太详细,所以我决定将自己学习的东西贴上来,希望能够共同学习,各位大牛能够多多指教。


下面是算法导论第二章1-1的习题源码,插入排序。

问题描述:

用插入排序说明数组A=<51, 41, 59, 26, 41, 58>排序过程。

#include<iostream>
#include<time.h>
using namespace std;
typedef int Elem;


void Show(Elem *A, int n)
{
	for (int i = 1; i <= n; i++)
	{
		cout << A[i] << " ";
	}
	cout << endl;
}

//插入排序
void	INSERTION_SORT( Elem *A,int n)
{
	int count = 0;	//统计经过运行次数
	Show(A, 6);
	cout << endl;
	Elem key;
	int i = 1, j = 1;

	//记录时间
	clock_t start, finish;
	double totaltime;
	start = clock();

	//插入排序算法核心块
	/************************************************************************************/
	for ( j = 2; j <= n; j++)
	{
		key = A[j];
		i = j - 1;
		while (i > 0 && A[i] > key)
		{
			count++;
			A[i + 1] = A[i];
			i = i - 1;
		}
		A[i + 1] = key;
		Show(A, j);
	}
	/************************************************************************************/
	//完成时间(秒)
	finish = clock();
	totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
	cout << endl <<"插入排序算法的运行次数为:"<< count << endl;
	cout << "插入排序算法的运行时间(秒)为:" << totaltime << endl << endl;

}

void main()
{
	Elem A[7] = { 0,51, 41, 59, 26, 41, 58 };
	INSERTION_SORT(A,6);
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值