zoukankan      html  css  js  c++  java
  • 快速排序算法

    快速排序算法:

    思路:先划分(难点),后递归

      1.找到一个数组q中间的数,x=p[l+r>>1]   ,对数组分区,使得左半边所有的数<=x,右半边所有的数>=x;  

      2.分界点在j 递归左半边【q,l,j】,递归右半边[q,j+1,r]

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N=1e6+10;
     4 int n;
     5 int p[N];
     6 void quick_sort(int q[],int l,int r){
     7     if(l>=r) return;
     8     int x=q[l+r>>1],i=l-1,j=r+1;
     9     while(i<j)
    10     {
    11         do i++;while (q[i]<x);
    12         do j--;while (q[j]>x);
    13         if(i<j) swap(q[i],q[j]);
    14     }
    15     quick_sort(q,l,j);
    16     quick_sort(q,j+1,r);
    17 }
    18 int main(){
    19     cin>>n;
    20     for(int i=0;i<n;i++)
    21         scanf("%d",&p[i]);
    22     quick_sort(p,0,n-1);
    23     for(int i=0;i<n;i++)
    24         printf("%d ",p[i]);
    25     return 0;
    26 } 
  • 相关阅读:
    MySQL
    MySQL -数据库备份
    MySQL
    MySQL
    MySQL
    MySQL
    MySQL
    MySQL
    MySQL
    53端口反弹shell
  • 原文地址:https://www.cnblogs.com/pythen/p/11768171.html
Copyright © 2011-2022 走看看