用了老办法,没啥新意,只是自己写了个sort
1: #include<iostream>
2: #include<string.h>
3: using namespace std;
4: int m,n;
5: const int maxn=100001;
6: int a[maxn],pos[maxn];
7:
8: void sort(int l,int r)
9: {
10: int i=l,j=r,mid=a[(l+r)/2];
11: while (i<=j){
12: while (a[i]<mid) i++;
13: while (a[j]>mid) j--;
14: if (i<=j){
15: int tmp;
16: tmp=a[i];a[i]=a[j];a[j]=tmp;
17: tmp=pos[i];pos[i++]=pos[j];pos[j--]=tmp;
18: }
19: }
20: if (i<r) sort(i,r);
21: if (l<j) sort(l,j);
22: }
23:
24: int main()
25: {
26: cin >> m >> n;
27: for (int i=0;i<m;i++){
28: cin >> a[i];
29: pos[i]=i+1;
30: }
31: sort(0,m-1);
32: int s,t;
33: for (int i=0;i<n;i++){
34: cin >> s >> t;
35: for (int j=0;j<m;j++) if (pos[j]>=s && pos[j]<=t){
36: cout << a[j] << ' ';
37: break;
38: }
39: }
40: cout << endl;
41: return 0;
42: }
本文介绍了一种快速排序算法的实现方法,并通过一个具体的应用场景展示了如何使用该算法进行数据排序。代码示例中,作者定义了一个快速排序函数,通过递归调用实现了对整数数组的有效排序,同时保留了原始数组元素的位置信息。最后,程序根据输入的范围参数,输出了指定区间内的排序结果。

591

被折叠的 条评论
为什么被折叠?



