新手村(二)

快速排序

[快速排序的基本思想] 设数组a中存放了n个数据元素,low为数组的低端下标,high为数组的高端下标,从数组a中任取一个元素(通常取a[low])作为标准,调整数组a中各个元素的位置,使排在标准元素前面的元素的关键字均小于标准元素的关键字,排在标准元素后面的元素的关键字均大于或等于标准元素的关键字。这样一次过程结束后,一方面将标准元素放在未来排好序的数组中该标准元素应在的位置,另一方面将数组中的元素以标准元素为中心分成两个子数组,位于标准元素左边子数组中的元素关键字均小于标准元素的关键字,右边同理,对两个子数组中的元素分别再使用相同的方法递归快速排序

代码如下:

#define	DateType 你想要的数据类型
typedef struct
{
	KeyType key;
}DateType
void QuickSort(DateType a[],int low,int high)
{
	int i=low,j=high;
	DateType temp=a[low];		//取第一个数据元素为标准数据元素
	while(i<j)
	{
		while(i<j&&temp.key<=a[i].key)	//在数组的右端扫描
			j--;
		if(i<j)
		{
			a[i]=a[j];
			i++;
		}
		while(i<j&&a[i].key<temp.key)	//在数组的左端扫描
			i++;
		if(i<j)
		{
			a[j]=a[i];
			j--;
		}
	}
	a[i]=temp;
	if(low<i)
		QuickSort(a,low,i-1);		//对左端子集合进行递归
	if(i<high)
		QuickSort(a,j+1,high);		//对右端子集合进行递归
}

最坏情况下快速排序算法的空间复杂度为O(n),时间复杂度为O(n²)
平均情况下时间复杂度为O(nlbn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
码题集新手村是CSDN等编程学习平台为初学者设立的一个练习和学习C语言的区域,通常包含一些基础的编程题目和教程,旨在帮助用户逐步掌握C语言的基本语法、数据类型、控制结构、函数等内容。新手村通常会提供详细的解答步骤和示例代码,让学习者通过实际操作来理解理论知识。 C语言是结构化编程语言,它的特点包括: 1. **基础性强**:C语言是系统级编程语言,学习者可以直接接触到计算机底层,了解内存管理、指针等概念。 2. **可移植性好**:C语言编写的程序能在大多数平台上运行,但需要手动调整编译选项。 3. **效率高**:由于接近底层,C语言执行效率高,适用于对速度要求高的场景。 4. **灵活性大**:C语言提供了丰富的控制结构和指针操作,使得程序员能灵活地控制程序流程。 在码题集新手村学习C语言,建议按照以下步骤进行: - **基础语法**:学习变量、常量、数据类型(如整型、浮点型、字符型)、运算符等。 - **控制结构**:理解顺序、条件(if-else)和循环(for、while)的用法。 - **函数**:编写和调用函数,理解参数传递和返回值。 - **数组和指针**:这是C语言的核心概念,学会使用和理解它们。 - **输入输出**:学习如何从用户处获取输入并输出结果。 相关问题: 1. 码题集新手村中C语言的入门教程是如何引导学习者理解基本概念的? 2. 初学者在新手村遇到C语言问题时,通常有哪些资源可以寻求帮助? 3. 简述在码题集新手村练习C语言项目时,如何通过解决问题提升编程能力?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值