快速排序的实现--挖坑法
来源:互联网 发布:de beers 知乎 编辑:程序博客网 时间:2024/06/06 02:12
//*********************挖坑法(快排的一种实现方式)************************
intPartSort(int*a,intleft,intright)
{
intkey =a[right];
intbegin =left;
intend =right;
while(begin < end)
{
while(begin < end &&a[begin] <= key)//begin找比key大的
begin++;
if(begin < end) //找到且begin < end则把begin的值给end,begin成为新的坑
a[end] =a[begin];
while(begin < end &&a[end] >= key) //end找比key小的
end--;
if(begin < end) //找到且begin < end则把end的值给begin,end成为新的坑
a[begin] =a[end];
}
//出了循环:end可能和begin指向同一个,把key的值给begin或者end都可以
// end比begin小,则begin的位置一定是key的位置
//此处不做判断,所以直接把key的值给a[begin]
a[begin] = key;
returnbegin;
}
voidDigHoles(int*a,intleft,intright)
{
assert(a);
if(left>=right)
return;
intmid = PartSort(a,left,right);
DigHoles(a,left, mid - 1);
DigHoles(a, mid + 1,right);
}
voidDigHolesTest()
{
//int arr[] = { 2, 0, 4, 9, 3, 6, 8, 7, 1, 5 };
intarr[] = { 2, 5, 4, 9, 3, 5, 8, 7, 1, 5 };
int_size =sizeof(arr) /sizeof(arr[0]);
DigHoles(arr, 0, _size - 1);
Print(arr, _size);
}
0 0
- 快速排序的实现--挖坑法
- 快速排序 “挖坑填空”实现
- 排序——快速排序挖坑法的变形
- 快速排序挖坑法理解与实现
- 快速排序之挖坑填补法
- 快速排序--挖坑填数+分治法
- 挖坑型快速排序
- 快速排序之“挖坑填数+分治”思想实现
- 【数据结构】快速(QuickSort)排序之——挖坑法
- “挖坑填坑”理解快速排序
- 经典排序算法-快速排序(挖坑法、前后指针法)、基数排序
- 快速算法实现----挖坑填数
- 排序算法---之交换排序(冒泡排序&快速排序-左右指针法,挖坑法,前后指针法)
- 快速排序经典算法(分治法,挖坑法,前后指针法,非递归)
- 从挖坑填数和分治法来诠释快速排序
- 快速排序法的实现
- 快速排序理解(挖坑填坑比喻理解)
- 以“挖坑填数”思想理解快速排序
- IO流的分类与接口
- When to Use Static Classes in C#
- 词向量和知识图谱 代码收集
- 斐波那契数列
- Docker学习笔记
- 快速排序的实现--挖坑法
- 【一天一道LeetCode】#115. Distinct Subsequences
- 其他--mac上ndk环境配置
- Mysql中的自定义函数和自定义过程
- SVN使用说明
- [肝学习资料]构造题
- leetcode 368. Largest Divisible Subset
- 周末读书——消息设计与开发
- 比较好的图像去噪算法