快速排序算法之我见(附上C代码)
来源:互联网 发布:淘宝客店铺设置 编辑:程序博客网 时间:2024/04/20 07:30
因为<The C Programming Language>一书中有一个练习,需要用到快速排序,所以又复习了一下,感觉收获颇多,故而分享之。
快速排序的核心是一种 divide and conquer 算法。可惜我们接触的中文书籍里面,突出强调了一趟快速排序怎么做,而没有重点介绍这种编程思想,可谓是本末倒置。单就一趟排序的细节来说,有很多中实现版本,每种版本都是处于不同的考虑。我们在那本蓝皮的《数据结构》当中学到的快速排序是一种 in-place quick sort。这个版本对空间复杂度做了优化,使得实现当中不需要占用额外的空间,空间复杂度为O(1)。
代码:
void qsort(char *listptr[], int left, int right){ int pivot = 0; // First, partition operation pivot = partition(lineptr, left, right); if (left < pivot) // recursively quick sort the former part if its length greater than 1 qsort(lineptr, left, pivot); // recursively quick sort the latter part if its length greater than 1 if ((pivot+1) < right) qsort(lineptr, pivot+1, right);}int partition(char *listptr[], int left, int right){ int i = left, j = right-1; char *pivot = listptr[left]; while (i < j) { for (;j > i; j--) { if (listptr[j] < pivot) { swap(&listptr[j], &listptr[i]); break; } } for (;i < j; i++) { if (listptr[i] > pivot) { swap(&listptr[i], &listptr[j]); break; } } } return i;}
- 快速排序算法之我见(附上C代码)
- 快速排序算法之我见
- 快速排序之我见
- 算法代码实现之快速排序,C/C++实现
- 编程算法 - 快速排序算法 代码(C)
- 伪代码算法之快速排序(分治排序)
- c--经典算法之排序---快速排序
- 快速排序算法C,JAVA代码
- C语言快速排序算法代码分析
- C语言快速排序算法及代码
- 排序算法之快速排序<Quick_Sort>及其C语言代码实现
- 算法 - 快速排序(C#)
- 快速排序算法(C)
- 算法导论 之 快速排序[C语言]
- C语言算法之快速排序
- 八大排序算法及完整c代码—快速排序
- 排序算法(C实现)--------- 快速排序
- 快速排序算法代码
- [jtable]多个源码实例
- 软件工程概述 - 企业架构 - IT企业做大做强之根本
- C语言类型转换 .
- 数据库损坏如何处理?
- 进程共享同内存
- 快速排序算法之我见(附上C代码)
- Android编程之仿微信显示更多文字的View
- 【OpenStack】metadata在OpenStack中的使用(二)
- 简单易懂的Dancing links讲解(1)
- 【Effective Java】Ch4_Class:Item13_最小化类及其成员的可访问性
- MFC程序的出生和结束
- 安装IIS并将web程序发布到IIS上
- 一个关于执行力的故事
- Socket编程 HTTP请求头中的特殊字符转义