• 快速排序


     1 #include<stdio.h>
     2 
     3 typedef struct NODE
     4 {
     5     int data;
     6     struct NODE *next;
     7 }Node;
     8 
     9 #define N 10
    10 
    11 int partition(int a[], int left, int right)
    12 {
    13     int low, high;
    14     int pivot = a[left];
    15 
    16     low = left;
    17     high = right;
    18 
    19     while(low < high)
    20     {
    21         while(low < high && a[high] > pivot)
    22         {
    23             high--;
    24         }
    25         //high从右向左找小于pivot 的元素
    26         if(low < high)
    27         {
    28             a[low++] = a[high];
    29         }
    30 
    31 
    32         while(low < high && a[low] < pivot)
    33         {
    34             low++;
    35         }
    36         //low 从左向右找大于pivot 的元素
    37         if(low < high)
    38         {
    39             a[high--] = a[low];
    40         }                
    41     }
    42 
    43     a[low] = pivot;//将枢轴元素保存到low=high的位置
    44         
    45     return low; //返回枢轴元素的位置
    46     
    47 }
    48 
    49 int QuickSort(int a[], int low, int high)
    50 {
    51     int p;
    52 
    53     if(low < high)
    54     {
    55         p = partition(a, low, high);
    56         QuickSort(a, low, p - 1);
    57         QuickSort(a, p + 1, high);
    58     }
    59 
    60     return 0;
    61 }
    62 
    63 
    64 //测试程序
    65 void main()
    66 {
    67     int a[N] = {2, 5, 3,  8, 10, 0, -5,  4, 34, 11};
    68     int m, n;
    69     int ret = 0;
    70     int i;
    71 
    72     m = 0;
    73     n = N -1;
    74 
    75     printf("before:");
    76     for(i = 0; i < N; i++)
    77     {
    78         printf("%d ", a[i]);
    79     }
    80     printf("\nafter:");
    81     
    82     ret = QuickSort(a, m, n);
    83     
    84     for(i = 0; i < N; i++)
    85     {
    86         printf("%d ", a[i]);
    87     }
    88     printf("\nret:%d\n", ret);
    89     
    90 }
  • 相关阅读:
    唯品会面经
    动态代理两种实现方式
    腾讯运营开发面经
    MySQL一些中重要命令
    金山wps面经
    三七互娱面经
    排序算法之快速排序(Quicksort)解析
    全排列算法分析(原创方法/一般方法/字典序法)
    WinForm如何去掉右边和下边的白边
    Java异常处理机制的秘密
  • 原文地址:https://www.cnblogs.com/jiangjh/p/3074257.html
Copyright © 2020-2023  润新知