• 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);
    }
  • 相关阅读:
    ext导出表格数据到excel中
    Oracle 外连接和 (+)号的用法
    通过json取树
    最简单的extjs 树
    extjs放在本地tomcat中部署运行
    extjs viewport panel tabPanel tree
    jsp注意的问题(初学)
    查看进程的路径,不用第三方软件
    vc常用技巧
    表单中单选按钮的有效性控制问题
  • 原文地址:https://www.cnblogs.com/diegodu/p/4616297.html
Copyright © 2020-2023  润新知