`
wang吖
  • 浏览: 239943 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java快速排序-学习笔记1

 
阅读更多

效率可观的快速排序实现代码:

 

 

import java.util.Arrays;

public class QuickSort2 {

	public static void main(String[] args) {

		int size = 5000;
		int[] array = new int[size];
		int[] array2 = new int[size];
		for (int j = 0; j < size; j++) {
			int r = (int) (Math.random() * 1000);
			array[j] = r;
			array2[j] = r;
		}

		long s1 = System.currentTimeMillis();
		Arrays.sort(array);
		for (int i : array) {
			System.out.print(i + "\t");
		}
		long e1 = System.currentTimeMillis();

		System.out.println("");

		long s2 = System.currentTimeMillis();
		QuickSort2.quickSort(array2, 0, array2.length - 1);
		for (int i : array2) {
			System.out.print(i + "\t");
		}
		long e2 = System.currentTimeMillis();

		System.out.println("");
		System.out.println((e1 - s1) + "-----" + (e2 - s2));
	}

	public static int partition(int[] arr, int low, int high) {
		int key = arr[low];
		while (low < high) {
			while (low < high && arr[high] >= key) {
				--high;// 从右向左搜索
			}
			arr[low] = arr[high];

			while (low < high && arr[low] <= key) {
				++low;// 从左向右搜索
			}
			arr[high] = arr[low];
		}
		arr[low] = key;
		return low;
	}

	public static void quickSort(int[] arr, int start, int end) {
		if (start <= end - 1) {
			int loc = partition(arr, start, end);// 对原数据进行一次划分
			quickSort(arr, start, loc - 1);// 从右往左搜索排序
			quickSort(arr, loc + 1, end);// 从左往右搜索排序
		}
	}
}

 

 

分享到:
评论

相关推荐

    Java数据结构和算法-学习笔记

    ### Java数据结构与算法——学习笔记 #### 一、引言 在计算机科学领域,**数据结构**与**算法**是两个极其重要的概念。数据结构指的是数据的组织方式,而算法则是解决特定问题的一系列步骤。这两者是编程的基础,...

    java数据结构和算法学习笔记

    ### Java数据结构与算法学习笔记知识点总结 #### 一、数据结构概述 数据结构是对数据的一种组织形式,它决定了数据的存储方式以及处理数据的方法。常见的数据结构包括但不限于数组、链表、栈、队列、二叉树、图等...

    Java并发编程与高并发解决方案-学习笔记

    - **单核处理器上的并发**: 在单核处理器上,虽然物理上只能执行一个线程,但通过快速地在多个线程间切换(即上下文切换),使得这些线程看起来像是同时运行。 - **多核处理器上的并发**: 在多核处理器上,每个线程...

    《java学习》-Java学习过程中笔记的配套代码.zip

    可能包含了经典的排序、搜索算法实现,如冒泡排序、快速排序、二分查找等,以及链表、树、图等数据结构的Java实现。 3. **tool**:这部分可能包含了一些常用的开发工具或库的使用示例,比如构建工具Maven,版本控制...

    Java学习笔记整理

    这些学习笔记将带你深入了解Java的核心概念,特别是面向对象编程和集合框架。以下是对每个文件内容的详细阐述: 1. **Day0804_HashMap的基本使用.docx**:HashMap是Java集合框架中的一个重要组件,它提供了键值对的...

    数据结构与算法-学习笔记 Java 版.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    java学习笔记,前人总结出来的精华之作(2)

    这份"java学习笔记,前人总结出来的精华之作(2)"无疑是为那些希望掌握Java技术的人提供了一份宝贵的资源。笔记深入浅出地介绍了Java的核心概念,包括语法、数据结构、算法等方面,旨在帮助学习者快速理解并熟练...

    阿里P8 架构师整理Java学习笔记.pdf

    ### Java学习笔记知识点总结 #### 一、JVM与内存管理 **1.1 JVM基本概念** - **JVM(Java Virtual Machine)**: Java虚拟机是执行Java字节码的虚拟机,它提供了运行Java程序所需的环境。 **1.2 线程** - **线程...

    Java 基础 第3阶段:高级应用-尚硅谷学习笔记(含面试题) 2023年

    在这个阶段的学习中,尚硅谷提供了2023年的学习笔记和面试题,帮助你提升Java技能并为求职做好准备。 首先,多线程是Java的一个关键特性,允许程序同时执行多个任务。理解线程的创建(通过Thread类或实现Runnable...

    java学习笔记整理

    ### Java学习笔记整理 #### 1. Java简介 ##### 1.1 计算机编程和开发语言 计算机系统由硬件系统和软件系统组成。软件系统又进一步细分为系统软件和应用软件。其中,系统软件包括操作系统、编译系统、数据库系统等...

    java基础18天Typora笔记

    学习ArrayList与LinkedList的区别、TreeSet与HashSet的不同,以及排序算法(如快速排序、归并排序)的应用。 14. **网络编程** 使用Socket进行客户端-服务器通信,理解TCP/IP协议栈的基本原理。 15. **数据库...

    Java数据结构与算法学习笔记之排序

    Java数据结构与算法学习笔记之排序,主要探讨了六种常见的排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序。这些排序算法是计算机科学的基础,无论是在日常开发还是面试中都经常遇到。现在...

    高手总结Java初学者学习经验笔记整理

    ### 高手总结Java初学者学习经验笔记整理 #### 一、Java集合框架概述 Java集合框架是Java标准库中的一个重要组成部分,它提供了一组接口和实现类来处理各种数据结构,比如列表、集合和映射等。这些数据结构允许...

    java学习笔记,全程

    【Java学习笔记全程详解】 Java作为一种广泛应用于企业级开发、移动应用、大数据处理等领域的编程语言,其学习过程涵盖了许多核心概念和技术。这份"我的Java学习笔记"详细记录了作者在学习Java过程中积累的心得体会...

    java学习笔记(排序,数组)

    在本Java学习笔记中,我们将深入探讨数组和排序算法这两个核心概念,它们是任何程序员学习Java编程时的基础。数组是存储固定数量同类型元素的数据结构,而排序算法则是对数组中的元素进行排列的方法。让我们详细了解...

    良葛格Java 学习笔记(繁体全)

    《良葛格Java 学习笔记(繁体全)》是一部详尽的Java学习资源,旨在帮助初学者和进阶者深入理解Java编程语言。笔记内容涵盖了从基础语法到高级特性的广泛领域,以繁体中文呈现,适合中文阅读习惯的用户。下面将对其中...

    Eclipse开发学习笔记.pdf

    ### Eclipse开发学习笔记知识点解析 #### 一、Eclipse工作台(Workbench) Eclipse工作台是Eclipse提供的集成开发环境的核心部分,旨在为开发者创建一个无缝集成的工具集,以便于管理和导航工作空间资源。它是开发...

    JAVA学习笔记.docx

    Java 学习笔记 Java 是一种广泛使用的编程语言,本资源摘要提供了 Java 学习笔记的关键要点,涵盖了 Java ...本资源摘要信息提供了 Java 学习笔记的关键要点,旨在帮助读者快速了解 Java 语言的基本概念和编程技巧。

    学习笔记 java\CoreJava笔记\CoreJava_day15

    以下是对"CoreJava_day15"学习笔记中可能涉及的一些关键知识点的详细解释: 1. **异常处理**: - 异常是程序运行时出现的错误,Java通过Exception类及其子类来表示这些错误。在Java中,异常处理使用try-catch-...

Global site tag (gtag.js) - Google Analytics