当前位置: 首页> 游戏> 手游 > 专家免费看ct片_免费企业网站建设_抖音企业推广_培训机构还能开吗

专家免费看ct片_免费企业网站建设_抖音企业推广_培训机构还能开吗

时间:2025/7/12 18:16:34来源:https://blog.csdn.net/2403_88215323/article/details/144943695 浏览次数:0次
专家免费看ct片_免费企业网站建设_抖音企业推广_培训机构还能开吗

快速排序的主要思想——分治(顾名思义:分别治理)

思路

1.确定分界点

找分界点有四种:最左端、最右端、中间数、随机数

2.调整区间

找到临界点,调整两个区间,使得:

左区间<=X   右区间>=X

分界点的数不一定是x!!!

方法1:

①开两个数组a[ ] b[ ];
②扫描整个要排序的区间q[ ],若当前的数<=x,放入a[ ],>x放入b[ ];
③先把a[ ]中的数放入q[ ],再把b[ ]中的数放入q[ ]中。

方法2:

①分别在整个要排序的区间的左右两端放入指针:左指针和右指针
② 当左指针指向的数字<X时,指针往右移动一个再比较,直到>X,停止移动;

     当右指针指向的数字>于X时,往左移动一个再比较,直到<X,停止移动
③当指针都停止时,交换指针所指的数,再移动一个,继续重复以上操作,直至两指针重合交叠

3.递归排序左右区间

只要左右两区间都排好,所有的都排好了。
因为左区间<=X   右区间>=X

例题

 题解

#include <iostream>
#include<bits/stdc++.h>
using namespace std;const int N = 100010;
int q[N];void quick_sort(int q[], int l, int r)
{if (l >= r) return;int i = l - 1, j = r + 1, x = q[l + r >> 1];while (i < j){do i ++ ; while (q[i] < x);do j -- ; while (q[j] > x);if (i < j) swap(q[i], q[j]);}quick_sort(q, l, j);quick_sort(q, j + 1, r);
}int main()
{int n;scanf("%d", &n);for (int i = 0; i < n; i ++ ) scanf("%d", &q[i]);quick_sort(q, 0, n - 1);for (int i = 0; i < n; i ++ ) printf("%d ", q[i]);return 0;
}

关键字:专家免费看ct片_免费企业网站建设_抖音企业推广_培训机构还能开吗

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: