zoukankan      html  css  js  c++  java
  • 排序之快速排序(2)

    这种快速排序的思路是:首先以a[start]为轴,不停得从数组的两端开始比较。从最右端开始,如果有比a[start]小的,那么赋值a[i];从最左端开始,如果有比a[start]大的,那么赋值a[j],以此往复,渐渐有序;注意的是递归跳出的条件,只有一个数就不需要排序,即start>=end
    
    #include<stdio.h>
    #include<stdlib.h>
    #define N 1000000
    int array[N];
    void init_array(int a[],int n);
    void print_array(int a[],int n);
    void quick_sort(int a[],int start,int end);
    void Quick_sort(int a[],int n);
    
    int main()
    {
     init_array(array,N);
     Quick_sort(array,N);
     print_array(array,N);
      
    } 
    
    void init_array(int a[],int n)
    {
     int i;
     for(i=0;i<n;i++)
      a[i]=rand()%1000; 
    }
    void print_array(int a[],int n)
    { int i;
     for(i=0;i<n;i++)
      printf("%d
    ",a[i]); 
    }
    void quick_sort(int a[],int start,int end)
    {
     int i,j,temp;
     if(start>=end) return; 
     i=start;
     j=end;
     temp=a[start];
     while(i<j)
     {
      while(i<j && a[j]>temp)
       j--;
      a[i]=a[j];
      while(i<j && a[i]<=temp)
       i++;
      a[j]=a[i];
     } 
     a[i]=temp;
     quick_sort(a,start,i-1);
     quick_sort(a,i+1,end); 
    }
    void Quick_sort(int a[],int n)
    {
     quick_sort(a,0,n-1);
    } 
  • 相关阅读:
    什么是前后端分离?
    Ubuntu修改时区和更新时间
    待学
    Pycharm默认输入状态是insert状态,选中文字无法直接输入替换或删除
    使用jsonify返回json数据
    Linux
    Linux
    Linux
    JavaScript
    JavaScript
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3499360.html
Copyright © 2011-2022 走看看