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

    想利用这一两天复习一下几个经典的排序算法,今天先来看一下快速排序:

      我们知道快速排序的思想是:先找到一个枢轴,然后进行分块,将其中元素比枢轴小的元素放到枢轴左边,将比他大的放到他的右边,这样我们就完成了一遍基本排序。我们确定了一个数字在排好序的位置;之后利用递归再将枢轴左边的数据分块,将右边的数据分块即可

    算法实现:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void swap( int &m, int &n){
     5     int temp = m;
     6     m = n;
     7     n = temp;
     8 }
     9 
    10 int Partition(int *data, int begin, int end){                                //找到枢轴,然后将左右的数据分开
    11     
    12     if(data == NULL || begin < 0 || end < 0){
    13         cout<<"the invalid array"<<endl;
    14     }
    15     
    16     int key = data[begin];
    17     int pos = begin;
    18     
    19     for(int index = begin + 1; index < end; index++){
    20         if(data[index] <= key){
    21             ++pos;
    22             swap(data[pos], data[index]);
    23         }
    24     }
    25     
    26     swap(data[begin], data[pos]);
    27     return pos;
    28 } 
    29 
    30 void QuickSort(int *data, int begin, int end){                           //递归实现
    31     if(begin == end){
    32         return;
    33     }
    34     
    35     int index = Partition(data, begin, end);
    36     if(index > begin){
    37         QuickSort(data, begin, index - 1);
    38     }
    39     if(end > index){
    40         QuickSort(data, index + 1, end);
    41     }
    42 }
    43 
    44 int main(){
    45     int num[] = {12, 3, 5, 9, 13, 0, 78, 11, 99, 23, 34, 8};                       //测试程序可行性
    46     int len = sizeof(num) / sizeof(int);
    47     
    48     QuickSort(num, 0, len);
    49     for(int i = 0; i < len; i++){
    50         cout<<num[i]<<' ';
    51     }
    52     
    53     return 0;
    54 }
  • 相关阅读:
    springboot + swagger的实体类属性注解
    Idea破解办法+idea免费生成注册码+jsp属性选择器+注解什么的都报错
    springboot笔记(一)
    docker-compose 安装
    Spring cloud 分布式锁
    Mybait 快速生成Java POJO文件 及数据库Mapping文件。
    Git 提交所有文件
    Docker dockerfile-maven-plugin 使用
    Docker remote api 开启
    Linux git 关联 github仓库
  • 原文地址:https://www.cnblogs.com/dormant/p/5317000.html
Copyright © 2011-2022 走看看