zoukankan      html  css  js  c++  java
  • 各种排序算法小结

    快速排序

     1 #include <exception>
     2 #include <time.h>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 
     6 int RandomInRange(int start, int end) {    
     7     srand((int)time(NULL));
     8     return start + rand() % (end - start + 1);
     9 }
    10 
    11 void Swap(int* x, int* y) {
    12     int t;
    13     t = *x;
    14     *x = *y;
    15     *y = t;
    16 }
    17 
    18 int Partition(int data[], int length, int start, int end) {
    19     if (data == NULL || length < 0 || start < 0 || end >= length)
    20         throw new std::exception("Invalid Parameters");
    21 
    22     int index = RandomInRange(start, end);
    23     Swap(&data[index], &data[end]);
    24 
    25     int small = start - 1;
    26     for (index = start; index < end; ++index) {
    27         if (data[index] < data[end]) {
    28             ++small;
    29             if (small != index)
    30                 Swap(&data[index], &data[small]);
    31         }
    32     }
    33 
    34     ++small;
    35     Swap(&data[small], &data[end]);
    36 
    37     return small;
    38 }
    39 
    40 void QuickSort(int data[], int length, int start, int end) {
    41     if (start == end)
    42         return;
    43 
    44     int index = Partition(data, length, start, end);
    45 
    46     if (index > start)
    47         QuickSort(data, length, start, index - 1);
    48     if (index < end)
    49         QuickSort(data, length, index + 1, end);
    50 }
    51 
    52 void OutputList(int data[], int length)
    53 {
    54     for (int i = 0; i<length-1; ++i)
    55     {
    56         printf("%d ", data[i]);
    57     }
    58     printf("
    ");
    59 }
    60 
    61 int main() {
    62     int data[9] = { 1,3,7,2,9,6,8,5 };
    63 
    64     OutputList(data, 9);
    65 
    66     QuickSort(data, 9, 0, 7);
    67 
    68     OutputList(data, 9);
    69 
    70     system("pause");
    71     return 0;
    72 }
  • 相关阅读:
    Java数组(1):数组与多维数组
    Java内部类(5):应用例
    Java内部类(4):静态内部类&接口内部类
    Java内部类(3):局部内部类
    Java内部类(2):普通的成员内部类
    Java内部类(1):概述
    Java中验证编码格式的一种方法
    Mybatis高级结果映射
    Mybatis Guide
    Java泛型(11):潜在类型机制
  • 原文地址:https://www.cnblogs.com/xiaoqingyang/p/5614345.html
Copyright © 2011-2022 走看看