zoukankan      html  css  js  c++  java
  • 数据结构-快速排序

    #include <stdio.h>
    #define N 8
    
    void quicksort(int a[],int m,int n);
    int quickpass(int a[],int left,int right);
    int main()
    {
        int i,m,n;
        int a[N]={48,63,35,76,54,12,35,88};
        m=0;     
        n=N-1;
        quicksort(a,m,n);
        for(i=0;i<N;i++)  //排序后的数据
           printf("%d ",a[i]);
        printf("
    ");
        return 0;
    }
    
    void quicksort(int a[],int m,int n) 
    //参数m表示每个子表的第一个元素,n表示每个子表的最后一个元素
    {
        int p;
        if(m < n)
        {
        p=quickpass(a,m,n); //调用一趟快速排序,寻找枢轴,以轴元素为界限将数组划分成两个子表。
        quicksort(a,m,p-1); //对左部子表快速排序
        quicksort(a,p+1,n); //对右部子表快速排序
        }
    }
    int quickpass(int a[],int left,int right)
    {
        int x,low,high;
        x=a[left];  //记录枢轴元素
        low=left;
        high=right;
        while(low < high)
        {
         while(low < high && a[high] >= x)   high--;
        //high从右向左找小于x的元素    
         if(low < high)//找到小于x的记录则进行交换。
         {a[low] = a[high];low++;}
    
         while(low < high && a[low] < x) low++;
       //low从左向右找大于x的元素    
         if(low < high)//找到大于x的记录则进行交换。
         {a[high]=a[low];high--;}
    
        }
        a[low]=x;   //将枢轴元素保存到low=high的位置
        return low; //返回枢轴元素的位置
    }
  • 相关阅读:
    八、基本数据结构(图形结构)
    七、基本数据结构(树形结构)
    4、使用 ImportTsv 将 Hive 数据导入 Hbase
    六、跳表
    五、二分法查找
    四、归并排序 && 快速排序
    一、kafka 介绍 && kafka-client
    三、排序之冒泡、插入、选择
    二、YARN
    三、synchronized & lock
  • 原文地址:https://www.cnblogs.com/songxxu/p/3389178.html
Copyright © 2011-2022 走看看