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

     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 }
  • 相关阅读:
    Distributed
    Archi
    SpringCloud
    Java 多线程
    Java 基础
    Java 基础
    Java 基础
    Java 基础
    python--all与any
    pandas--apply/applymap/map
  • 原文地址:https://www.cnblogs.com/jiangjh/p/3074257.html
Copyright © 2011-2022 走看看