비귀속 빠른 정렬과 비귀속 빠른 곱셈
11288 단어 빠른 정렬
1 #include <iostream>
2 #include <cstdio>
3 #include <stack>
4 using namespace std;
5 long long re_pows(int a,int n)//
6 {
7 if(n==0) return 1;
8 long long t=re_pows(a,n/2);
9 long long ans=t*t;
10 if(n&1) ans*=a;
11 return ans;
12 }
13 long long ure_pows(int a,int n)//
14 {
15 int i=1;
16 while(i<=n)i<<=1;
17 long long ans=1;
18 while(i>>=1)
19 {
20 ans*=ans;
21 if(n&i) ans*=a;
22 }
23 return ans;
24 }
25 int arr[100]={1,2,4,5,3};
26 struct node
27 {
28 int l,r;
29 node(){}
30 node(int a,int b){l=a;r=b;}
31 };
32 int part(int l,int r)
33 {
34 int i=l-1,j=l;
35 while(j<r)
36 {
37 if(arr[j]<arr[r])
38 swap(arr[++i],arr[j++]);
39 else j++;
40 }
41 swap(arr[++i],arr[r]);
42 return i;
43 }
44
45 void re_qsort(int l,int r)//
46 {
47 if(l>=r) return;
48 int m=part(l,r);
49 re_qsort(l,m-1);
50 re_qsort(m+1,r);
51 }
52
53 stack<node> q;
54 void ure_qsort(int l,int r)//
55 {
56 q.push(node(l,r));
57 while(!q.empty())
58 {
59 l=q.top().l;
60 r=q.top().r;
61 q.pop();
62 while(l<r)
63 {
64 int m=part(l,r);
65 q.push(node(m+1,r));//
66 r=m-1;
67 }
68 }
69 }
70 int main()
71 {
72 int i,n;
73 while(cin>>n)
74 {
75 for(i=0;i<n;i++)
76 {
77 cin>>arr[i];
78 }
79 ure_qsort(0,n-1);
80 for(i=0;i<n;i++)
81 {
82 cout<<arr[i]<<' ';
83 }
84 cout<<endl;
85 }
86 return 0;
87 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 거품 정렬 및 빠른 정렬 코드거품 정렬: 기본 사상: 정렬해야 할 한 조의 수에서 현재 정렬되지 않은 범위 내의 모든 수를 위에서 아래로 서로 인접한 두 수를 순서대로 비교하고 조정하여 비교적 큰 수를 아래로 가라앉히고 비교적 작은 수를 위로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.