zoukankan      html  css  js  c++  java
  • leetcode-快速排序C++自写

    快速排序

    #include <stdio.h>
    int a[101], n;//定义全局变量,这两个变量需要在子函数中使用
    void quicksort(int left, int right) {
        int i, j, t, temp;
        if (left > right)
            return;
        temp = a[left]; //temp中存的就是基准数
        i = left;
        j = right;
        while (i != j) 
        { //顺序很重要,要先从右边开始找
            while (a[j] >= temp && i < j)//找到右边比基准数小的
            {
                j--;
            }
    
            while (a[i] <= temp && i < j)//找到左边比基准数大的  
            {
                i++;
            }
            if (i < j)//交换两个数在数组中的位置
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
        //最终将基准数归位
        //基准数变成相遇时的数
        a[left] = a[i]; //i ==j  左右指针相遇了,因此要将当前的数和基准数进行交换
        //中间数变成基准数
        a[i] = temp;
        quicksort(left, i - 1);//继续处理左边的,这里是一个递归的过程
        quicksort(i + 1, right);//继续处理右边的 ,这里是一个递归的过程
    }
    int main() {
        int i;
        //读入数据
        scanf("%d", &n);
        for (i = 1; i <= n; i++)
            scanf("%d", &a[i]);
        quicksort(1, n); //快速排序调用
        //输出排序后的结果
        for (i = 1; i < n; i++)
            printf("%d ", a[i]);
        printf("%d
    ", a[n]);
        return 0;
    }
    以大多数人努力程度之低,根本轮不到去拼天赋~
  • 相关阅读:
    利用border制作三角形原理
    JavaScript中null和undefined
    localStorage 如何存储JSON数据并读取JSON数据
    常见的几种浏览器内核简单介绍
    关于Banner设计的促销氛围
    分数分配
    餐饮管理系统
    餐馆管理之点菜
    餐饮管理之结账
    餐饮管理之菜品管理
  • 原文地址:https://www.cnblogs.com/gcter/p/15338845.html
Copyright © 2011-2022 走看看