zoukankan      html  css  js  c++  java
  • 我写的快排程序

    参考了上一篇文章的思路。

    代码还是要多写,多动手,不然实际面试的时候会慌。还是要用百分之两百的态度去准备一百的面试。

    #include <iostream>

    using namespace std;

    void qsort(int *arr, int start, int end) {
    if (start >= end) {
    return;
    }

    int pivot = arr[end];
    int i = start, j = end - 1;
    while (i <= j) {
    while (i <= j && arr[i] <= pivot) i++;
    while (j >= i && arr[j] > pivot) j--;
    if (i < j) {
    int tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
    i++;
    j--;
    }
    }
    if (i != end) {
    int tmp = arr[i];
    arr[i] = pivot;
    arr[end] = tmp;
    }
    qsort(arr, start, i-1);
    qsort(arr, i+1, end);
    }

    void qsort2(int *arr, int start, int end) {
    if (start >= end) {
    return;
    }

    int pivot = arr[end];
    int i=start, j=start;
    for (; j < end; j++) {
    if (arr[j] <= pivot) {
    if (i != j) {
    int tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
    }
    i++;
    }
    }

    if (i != end) {
    int tmp = arr[i];
    arr[i] = arr[end];
    arr[end] = tmp;
    }

    qsort2(arr, start, i-1);
    qsort2(arr, i+1, end);
    }

    int main() {

    int arr[] = {9, 8, 20, 5, 100, 4, 80, 80};
    //qsort(arr, 0, 5);
    qsort2(arr, 0, 7);
    for (int i=0; i<8; i++) {
    cout << arr[i] << endl;
    }
    return 0;
    }

  • 相关阅读:
    C++ Primer 第五版-1.1
    C++ Primer 第五版笔记-1.0
    TouchID
    正则表达式
    duplicate symbol 错误
    第三方登录
    AFNetWorking
    IOS---通知
    左右点击--日期增减
    Xcode相关设置
  • 原文地址:https://www.cnblogs.com/charlesblc/p/6399681.html
Copyright © 2011-2022 走看看