zoukankan      html  css  js  c++  java
  • 排序—快排 (java实现)

    排序

    Time Limit: 1000 ms Memory Limit: 32678 Kib

    Problem Description

        给你N(N<=100)个数,请你按照从小到大的顺序输出。

    Input

        输入数据第一行是一个正整数N,第二行有N个整数。

    Output

        输出一行,从小到大输出这N个数,中间用空格隔开。

    Sample Input

    5
    1 4 3 2 5

    Sample Output

    1 2 3 4 5

    Hint

     

    Source

     

    import javax.swing.*;
            import java.lang.Math;
            import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int[] arr = new int[100];
            int i;
            int n = sc.nextInt();
            for (i = 0; i < n; i++){
                arr[i] = sc.nextInt();
            }
            QuickSort(arr, 0, n-1);
            for (i = 0; i < n-1; i++){
                System.out.printf("%d ", arr[i]);
            }
            System.out.printf("%d", arr[i]);
        }
    
        private static void QuickSort(int[] num, int left, int right){
            // 如果left=right,即数组中只剩一个元素时,直接返回
            if (left >= right){
                return;
            }
            // 设置最左边的元素为基准值
            int key = num[left];
            // 数组中比key小的放在左边,比key大的放在右边
            int i = left;
            int j = right;
            while (i < j){
                // j向左移动,直到碰到比key小的数
                while (num[j] >= key && i<j){
                    j--;
                }
                // i向右移动,直到碰到比key大的数
                while (num[i] <= key && i<j){
                    i++;
                }
                // i和j指向的元素交换
                if (i < j){
                    int temp = num[i];
                    num[i] = num[j];
                    num[j] = temp;
                }
            }
            num[left] = num[i];
            num[i] = key;
            QuickSort(num, left, i-1);
            QuickSort(num, i+1, right);
        }
    }
  • 相关阅读:
    javascript之this的深入学习
    记一次前端面试
    nodejs学习
    Javascript内置对象
    Javascript事件
    全屏滚动插件小结
    Javascript函数的深入学习
    近年来前端开发趋势,MVVM框架,Vue.js的核心思想
    Javascript的for ... in循环
    JavaScript的对象深入学习
  • 原文地址:https://www.cnblogs.com/sugerandmaster/p/11480835.html
Copyright © 2011-2022 走看看