`
hzizh
  • 浏览: 8565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

个人写的快速排序

阅读更多

个人写的快速排序

 

#include <stdio.h>

void getValues(int* values, int length);
void showValues(int* values,int length);
void quickSort(int* values, int start, int end);
int partition(int* valuse, int start, int end);
void exchange(int* a, int* b);

int main(int argc, char** argv){

	int values[10];
	int i;
	int length = 10;

	printf("原始数组中数值如下:\n");
	getValues(values,length);
	showValues(values,length);

	printf("快速排序后数组中数值如下:\n");
	quickSort(values,0,length-1);
	showValues(values,length);

	return 0;
}

void getValues(int* values,int length){

	//产生随机数,存储在values数组中。
	int i;
	srand ( time() );
	for(i=0;i<length;i++){		
		values[i] = rand()%10;
	}
}

//打印出数组中的数值
void showValues(int* values, int length){

	int i=0;
	while( length > 0 ){
		
		printf("values[%d] : %d",i,values[i]);
		printf("\n");

		length--;
		i++;
	}
}

//快速排序函数
void quickSort(int* values, int start, int end){

	int position;

	if(start == end) return;
	
	position = partition(values,start,end);

	if(position == start){
		quickSort(values,start+1,end);
	}

	else{
	quickSort(values,start,position-1);
	quickSort(values,position,end);
	}

}


//将数组分成两部分A、B两段,A段中的数值小于B段中的数值
int partition(int* values, int start, int end){

	int i;
	int j;
	int tmp;
	i = start;
	j = end;	
	while(i<j){
		tmp = *(values+i);
		while(*(values+j)>=tmp)j--;
		if(i<j)
			exchange(values+i,values+j);		
		while(*(values+i)<tmp)i++;
		if(i<j)
			exchange(values+i,values+j);
	}
	return i;
}

//交换指针对应的两个数值
void exchange(int* a, int* b){
	int tmp;
	tmp = *a;
	*a = *b;
	*b = tmp;
}

  

分享到:
评论

相关推荐

    快速排序 C语言 数据结构 程序员面试

    掌握快速排序不仅可以提升个人算法能力,还能在实际项目中提高数据处理效率。 ### 总结 快速排序是一种重要的排序算法,其高效性使其成为处理大规模数据集的理想选择。通过理解和实践快速排序,不仅能够提升个人的...

    个人写的几个排序算法

    这里我们主要探讨的是由个人编写的几种排序算法实现,包括插入排序、冒泡排序、选择排序、堆排序、快速排序和基数排序,全部用C++语言完成。这些算法各有特点,适用于不同的场景。 1. 插入排序:插入排序是一种简单...

    实现(串行,openmp、mpi、openmp+mpi)快速排序算法,并作出时间对比图

    主要采用快速排序实现(串行,openmp、mpi、openmp+mpi)排序算法,所需环境为VS2019+openmp+mpi,cmd命令 (1)完成了CPU串行程序和三种并行程序在各种规模的运行,并作出时间对比图 (2)完成了串行,openmp使用...

    排序及基本算法

    快速排序则采用分治策略,选择一个基准元素,将数组分成小于基准和大于基准的两部分,递归地对这两部分进行排序,最终实现整体排序。 3. **选择排序**:包括直接选择排序、树型选择排序和堆排序。选择排序的基本...

    各种自己写的排序算法,做个备份

    拆分排序可能是指将大问题分解成小问题处理的策略,如快速排序、归并排序等,它们通过分治法将数组分成更小的部分进行排序,然后合并结果。 2. **SieveSort**:这个名字让人联想到筛法,这可能是一种基于筛选思想的...

    快速排序,结构简单,小白都能看懂结构

    个人写的快排,仅供参考

    随机发52张牌并排序

    在这个例子中,可能会使用快速排序或者简单的选择排序,因为它们在大多数情况下效率较高。排序过程可以通过嵌套循环实现,外层循环遍历所有牌,内层循环进行比较和交换操作。 在提供的`sy11.c`源文件中,我们可以...

    JavaScript中几种常见排序算法小结

    不要用太大数据去测试冒泡排序(浏览器崩溃了我不管) 如果有兴趣可以 下载测试页面 个人理解 冒泡排序:最简单,也最慢,貌似长度小于7最优 插入排序: 比冒泡快,比快速排序和希尔排序慢,较小数据有优势 快速排序...

    文本数组排序.zip易语言项目例子源码下载

    快速排序通常选取一个基准值,将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素都大于基准,然后对这两部分再递归地进行快速排序,直到所有元素都在其最终位置上。 在实际的易语言项目中,我们还需要...

    汇编—人名排序程序的实现

    7. 排序算法:在这个程序中,可能会实现如冒泡排序、选择排序或快速排序等经典排序算法。这些算法的汇编实现需要巧妙地利用循环、条件分支和内存操作。 8. 流程图:为了辅助理解程序流程,通常会提供流程图,它以...

    c语言数据结构程序设计-个人财政支出管理系统

    C语言中的冒泡排序、快速排序或二分查找等算法可以派上用场。 4. **统计与报告**:系统应能提供各类统计信息,如月度或年度总支出、类别支出比例等。这就需要对数据进行聚合计算,如求和、平均值和占比计算。 5. *...

    USB排序软件

    这样的软件对于音乐爱好者来说,尤其方便他们在USB设备上组织和享受个人的音乐库。 总的来说,USB排序软件是现代人日常工作中不可或缺的工具之一,它简化了文件管理,提高了工作效率,同时也为数据安全提供了保障。...

    一步一步写算法

    快速排序通过分区操作将数据分为两部分,然后递归地进行排序。归并排序则是通过合并已排序的部分来达到排序整个数据集的目的。 7. 堆排序是一种利用二叉堆数据结构进行的排序方法,二叉堆可以高效地维护最大或最小...

    基于SpringBoot+VueJS的个人云盘管理系统的设计与实现(源码+部署说明+演示视频+源码介绍).zip

    在功能上,该个人云盘管理系统实现了用户注册、登录、文件上传、下载、删除、分享等基本功能,同时还支持文件的分类管理,可以按照文件类型、上传时间等信息进行排序和查找。 在安全性方面,该系统采用了JWT(Json ...

    VS2005写的个人通讯录

    【标题】"VS2005写的个人通讯录"揭示了这是一个使用Visual Studio 2005(简称VS2005)开发的个人通讯录应用程序。VS2005是微软公司推出的一款强大的集成开发环境,支持C#、VB.NET、C++等多种编程语言。在这个项目中...

    C++_极点五笔词库排序

    3. 数据结构和算法,如排序算法(可能使用了快速排序、归并排序或其他高效算法)。 4. 文件格式解析,理解极点五笔词库的存储结构。 5. 可能涉及的文本处理技术,如字符串比较和搜索优化。 这个项目可以作为学习C++...

    简单个人书管理系统的设计与实现

    这需要应用排序算法,如冒泡排序、选择排序、插入排序,或者是更高效的快速排序、归并排序等。 4. **数据持久化**:为了保存用户的书籍信息,系统需要实现数据的持久化存储,这可能涉及到文件操作或数据库连接。...

    行业-电子-排序系统、排序方法、服务器、记录介质、及电子设备的说明分析.rar

    常见的排序算法有快速排序、归并排序、堆排序等,它们各有优缺点,适用于不同的数据规模和场景。例如,快速排序在平均情况下具有较高的效率,而归并排序则在稳定性上有优势。 其次,排序方法是指实现排序的具体策略...

    个人练习排序、【http、OKhttp、HttpClient获取网络数据】、获取相册或自拍图片包括截图等操作

    常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。了解并熟练掌握排序算法能够提高代码的效率和性能。 2. **HTTP协议**: HTTP(超文本传输协议)是互联网上应用最广泛的一种网络...

Global site tag (gtag.js) - Google Analytics