void sort(int * a,int left,int right)
{
if(left> = right)/ *如果左边索引大于或者等于右边的索引就代表已经整理完成一个组的* /
{
返回;
}
int i = left;
int j = right;
int key = a [left];
while(i = a [i])
/ *这是我在当组内向前寻找,同上,不过注意与键的大小关系停止循环和上面相反,
因为排序思想是把数往两边扔,所以左右两边的数大小与重点的关系相反* /
{
我++;
}a [j] = a [i];
}a [i] = key;
/ *当前组内找完一遍以后就把中间数键回归* /
sort(a,left,i-1);
/ *最后用同样的方式对分出来的左边的小组进行同上的做法* /
sort(a,i + 1,right);
/ *用同样的方式对分出来的右边的小组进行同上的做法* /
/ *当然最后可能会出现很多分左右,直到每一组的i = j为止* /
}
推荐阅读
- 个人日记|K8s中Pod生命周期和重启策略
- 学习分享|【C语言函数基础】
- C++|C++浇水装置问题
- 数据结构|C++技巧(用class类实现链表)
- C++|从零开始学C++之基本知识
- 步履拾级杂记|VS2019的各种使用问题及解决方法
- leetcode题解|leetcode#106. 从中序与后序遍历序列构造二叉树
- 动态规划|暴力递归经典问题
- 麦克算法|4指针与队列
- 遇见蓝桥遇见你|小唐开始刷蓝桥(一)2020年第十一届C/C++ B组第二场蓝桥杯省赛真题