`
狂盗一枝梅
  • 浏览: 18081 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

【数据结构】【排序】快速排序

阅读更多

       快速排序的原理就是使用某个中间值将数组切割成两部分,一部分比中间值都小,另一部分比中间值都大,这是一次排序的作用;分别对两部分进行同样的操作,直到只剩下一个数,这样最终的数组就变成了有序的。

以下是java实现:

package com.kdyzm.sort.quicksort;

import java.util.Scanner;

/**
 * 快速排序相关P272
 * 
 * @author kdyzm
 *
 */
public class QuickSortDemo {
	public static void main(String[] args) {
		int[] array = new int[1024];
		Scanner sc = new Scanner(System.in);
		int total = sc.nextInt();
		for (int i = 0; i < total; i++) {
			array[i] = sc.nextInt();
		}
		quickSort(array, 0, total - 1);
		output(array, total);
	}

	private static void output(int[] array, int total) {
		for (int i = 0; i < total; i++) {
			System.out.print(array[i] + " ");
		}
		System.out.println();
	}

	private static void quickSort(int[] array, int low, int high) {
		if (low < high) {
			int pivotLoc = OneQuickSort(array, low, high);
			quickSort(array, low, pivotLoc - 1);
			quickSort(array, pivotLoc + 1, high);
		}
	}

	/**
	 * 一次快速排序,找出中间点出来
	 */
	private static int OneQuickSort(int[] array, int low, int high) {
		int pivotKey = array[high];
		while (low < high) {
			while (low < high && array[low] <= pivotKey)
				++low;
			array[high] = array[low];
			while (low < high && array[low] >= pivotKey)
				--high;
			array[low] = array[high];
		}
		array[low] = pivotKey;
		return low;
	}
}

 输入N个数作为数组长度,然后输入N个无序的整数,回车即可查看排序结果。

 

分享到:
评论

相关推荐

    c语言 数据结构 快速排序算法

    c语言版本的数据结构的快速排序算法,适用于新手学习

    数据结构--快速排序C++源代码

    数据结构--快速排序C++源代码,自己编写调试,代码简单易懂,不长

    C#快速排序数据结构之快速排序;数据结构之快速排序;数据结构之快速排序

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它基于分治策略,将大问题分解为小问题来解决。在C#编程语言中,我们可以很容易地实现快速排序算法。接下来,我们将详细讨论快速排序的...

    数据结构_快速排序

    严蔚敏版的《数据结构》是一本经典的数据结构教材,书中详细介绍了各种数据结构及其操作,包括快速排序在内的各种排序算法。第八章可能涵盖了快速排序的基本概念、算法实现、时间复杂度分析以及优化策略等内容。 ...

    数据结构排序实验报告

    ### 数据结构排序实验报告知识点解析 #### 实验背景与目的 - **实验背景**:本实验报告来源于南昌大学科学技术学院信息学科部计算机系的一次专业课程实验。《数据结构》作为一门重要的计算机基础课程,其目的在于...

    数据结构快速排序二分法查找

    "数据结构快速排序二分法查找" 快速排序和二分法查找是数据结构中两个非常重要的概念,它们都是解决实际问题的重要工具。在本文中,我们将详细介绍快速排序和二分法查找的原理、实现和应用。 快速排序 快速排序...

    数据结构堆排序 快速排序 归并排序

    首先,堆排序是一种基于比较的排序算法,利用了二叉堆的数据结构。二叉堆是一个完全二叉树,可以分为最大堆或最小堆,其中每个父节点的值都大于或等于其子节点。堆排序的过程包括构建初始堆和调整堆。首先,将无序...

    数据结构 快速排序 排序算法

    数据结构排序算法中的快速排序,是非常重要的一个算法,从时间上来看,是在随机情况下排大量数据的最优选择

    数据结构 严蔚敏 快速排序

    数据结构 严蔚敏 快速排序

    哈工大数据结构实验5_冒泡排序与快速排序

    (1) 冒泡排序和快速排序; (2) 插入排序和希尔排序; (3) 选择排序和堆排序; (4) 递归和非递归的归并排序。 2. 产生不同规模和分布的数据,以 Excel 生成算法执行时间 T(n)关于输入规模 n 的曲线的形式,...

    数据结构课程设计实例快速排序.rar

    数据结构课程设计实例快速排序 数据结构课程设计实例快速排序 数据结构课程设计实例快速排序 数据结构课程设计实例快速排序 数据结构课程设计实例快速排序 数据结构课程设计实例快速排序 数据结构课程设计实例快速...

    数据结构实验4快速排序

    数据结构实验4快速排序 在本实验中,我们将学习快速排序算法的实现,以学生的考试成绩单为例,对其进行排序并输出每个学生的名次、学号、姓名和成绩。 一、快速排序算法原理 快速排序是一种基于比较的排序算法,...

    数据结构排序算法演示系统

    《数据结构排序算法演示系统详解》 在计算机科学领域,数据结构与排序算法是至关重要的基础知识,它们直接影响到程序的效率和性能。本文将详细解析“数据结构排序算法演示系统”,探讨其中蕴含的多种排序算法及其原...

    数据结构 综合排序 冒泡排序 直接插入排序 快速排序 希尔排序等等

    这些算法在数据结构与算法课程中是非常重要的基础内容,它们各自有着独特的特性和应用场景。 ### 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果...

    数据结构快速排序完整版

    数据结构与算法是计算机科学的基础,其中排序算法是不可或缺的一部分。快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它以分治法(Divide and Conquer)为基础,具有平均时间复杂度为...

    快速排序 数据结构 实现

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的...

    数据结构 快速排序 输出每一趟结果

    根据给定文件的信息,我们可以总结出以下关于“数据结构 快速排序 输出每一趟结果”的知识点: ### 一、快速排序的基本概念 快速排序是一种高效的排序算法,采用分治法策略来把一个序列分为较小和较大的两个子序列...

    数据结构课程设计——快速排序

    在数据结构课程设计中,快速排序的实现通常会涉及链表、数组等数据结构,并且需要考虑如何优化以提高效率。例如,当序列基本有序时,快速排序的性能会降低,因为每次分区操作只能将序列分为一个元素和其余元素,导致...

    c语言 数据结构 快速排序

    快速排序代码..在vc++6.0, vs编译运行通过

Global site tag (gtag.js) - Google Analytics