zoukankan      html  css  js  c++  java
  • C/C++ 快速排序 quickSort

    下面的动画展示了快速排序算法的工作原理。

     

    快速排序图示:可以图中在每次的比较选取的key元素为序列最后的元素。

    #include <stdio.h>
    #include <stdlib.h> 
    
    void swap(int * x, int * y)
    {
        int tmp = *x; 
        *x = *y; 
        *y = tmp;
    }
    
    void printlist(int list[],int n)
    {
        int i;
        for(i=0;i<n;i++)
            printf("%d	",list[i]);
        printf("
    ");
    }
    
    void quickSort(int* A, int start , int end)
    {
        if(A == NULL || start >= end)
            return;
    
        int key = A[start];
    
        int left = start + 1;
        int right = end;
    
        while(left <= right)//×¢ÒâµÈºÅ
        {   
            while(A[left] <= key && left <= right)//×¢ÒâµÈºÅ
                left ++; 
            while(A[right] > key && left <= right)//×¢ÒâµÈºÅ
                right --; 
    
            if(left < right)
            {
                //printf("swap %d & %d
    ", A[left], A[right]);
                swap(&A[left], &A[right]);
                left++;
                right--;
            }
    
        }
        //printlist(A, end - start + 1);
        //printf("left %d righ %d
    ", left, right);
    
        swap(&A[start], &A[right]);
    
        quickSort(A, start, left - 1);
        quickSort(A, left + 1, end);
    }
    
    
    void main()
    {
        const int MAX_ELEMENTS = 10;
        int list[MAX_ELEMENTS];
    
        int i = 0;
    
        // ²úÉúÌî³äÐòÁеÄËæ»úÊý
        for(i = 0; i < MAX_ELEMENTS; i++ ){
            list[i] = rand()%100;
        }
        printf("½øÐÐÅÅÐò֮ǰµÄÐòÁÐ:
    ");
        printlist(list,MAX_ELEMENTS);
    
        // sort the list using quicksort
        quickSort(list,0,MAX_ELEMENTS-1);
    
        // print the result
        printf("ʹÓÿìËÙÅÅÐòËã·¨½øÐÐÅÅÐòÖ®ºóµÄÐòÁÐ:
    ");
        printlist(list,MAX_ELEMENTS);
    }
  • 相关阅读:
    使用a标签制作tooltips
    使用editorconfig配置你的编辑器
    JointJS绘制流程图
    用highcharts展现你的数据
    css段落首字母下沉
    sklearn框架的系统学习
    numpy删除二维数据矩阵的行和列
    sklearn中机器学习算法评价指标
    sklearn调用逻辑回归算法
    sklearn调用多项式回归
  • 原文地址:https://www.cnblogs.com/diegodu/p/4616297.html
Copyright © 2011-2022 走看看