[笔记]一道C语言面试题:实现快速排序
2011-09-08 01:48
477 查看
题目:输入整数数组List及数组长度n,对其进行快速排序
来源:某500强企业面试题目
思路:可参考这里的Flash动画,非常清晰明了
复杂度:时间复杂度O(n log(n))
Technorati 标签: C语言,面试题
来源:某500强企业面试题目
思路:可参考这里的Flash动画,非常清晰明了
复杂度:时间复杂度O(n log(n))
//---------------------------------------- // 实现快速排序 // 参考Flash动画 http://www.jcc.jx.cn/xinwen3/news/kj/flash/2004/0426/1306.htm //---------------------------------------- int Partition(int List[], int L, int R){ int Pivot = List[L]; // 基准值取第一个 do{ // 反复循环 while(List[R] >= Pivot){ // 从后向前找第一个比基准值小的 R--; // 没找到就左移 if (L == R){ // 判断L和R是否重合,如果重合,则退出 List[L] = Pivot; return L; } } List[L] = List[R]; // 取出R指向的数字,放入L中 L++; // L右移 if (L == R){ // 判断L和R是否重合,如果重合,则退出 List[L] = Pivot; return L; } while (List[L] <= Pivot){ // 从前向后找第一个比基准值大的 L++; // 没找到就右移 if (L == R){ // 判断L和R是否重合,如果重合,则退出 List[L] = Pivot; return L; } } List[R] = List[L]; // 取出L指向的数字,放入R中 R--; // R左移 if (L == R){ // 判断L和R是否重合,如果重合,则退出 List[L] = Pivot; return L; } }while(true); } void QuickSortList(int List[], int L, int R){ if (L >= R) return; int p = Partition(List, L, R); QuickSortList(List, L, p - 1); QuickSortList(List, p + 1, R); } void QuickSort(int List[], int n){ QuickSortList(List, 0, n-1); } //---------------------------------------- // 测试快速排序 //---------------------------------------- void TestQuickSort(void){ int List[] = {3,5,1,3,2,5,0,1,8,4,11,7}; int n = 12; int i; printf("Before: "); for (i = 0; i< n - 1; i++) printf("%d, ", List[i]); printf("%d\n", List[n-1]); printf("After: "); QuickSort(List, n); for (i = 0; i< n - 1; i++) printf("%d, ", List[i]); printf("%d\n", List[n-1]); }
Technorati 标签: C语言,面试题
相关文章推荐
- [笔记]一道C语言面试题:实现 itoa() 函数
- [笔记]一道C语言面试题:实现冒泡排序
- [笔记]一道C语言面试题:得到整数的M进制表示字符串
- 一道面试题:按照其描述要求用java语言实现快速排序
- 一道多线程面试题-C语言实现
- [笔记]一道C语言面试题:IPv4字符串转为UInt整数
- [笔记]一道C语言面试题:大整数乘法
- [笔记]一道C语言面试题:写一个宏,将16位的整数转为Big Endian
- [笔记]一道C语言面试题:判断字串是否可以通过重新排列字母使之对称
- [笔记]一道C语言面试题:判断字串是否可以通过重新排列字母使之对称
- 【C语言】【面试题】【笔试题】模拟实现strstr函数
- c语言 中的一道经典面试题
- C++笔记 | C语言strcpy函数分析与实现
- 一道面试题--模拟实现简易的移动用户资费统计系统逻辑
- 一道经典面试题“I love china”的实现
- 学习笔记:冒泡排序、插入排序、选择排序、快速排序的实现
- 【面试题】C语言:实现一个函数,判断一个数是不是素数。
- 【C语言】【面试题】【笔试题】模拟实现数据库中strcmp函数
- C语言实现单链表面试题--进阶
- 单链表相关面试题(C语言实现)