- 浏览: 326009 次
- 性别:
- 来自: 西宁
文章分类
- 全部博客 (120)
- Java Thought (29)
- Java Pattern (4)
- Data Base (7)
- Algorithm Design (33)
- Linux (0)
- Mysql (2)
- Oracle (0)
- ConstructionDesign-架构 (5)
- Spring Platform (0)
- Tomcat (1)
- JavaScript (7)
- Web System (3)
- MS SQLServer (1)
- 软件哲学 (6)
- View (3)
- Java GUI (4)
- CSSDIV (7)
- CloudComputing (0)
- WebService (0)
- SystemOrProject (2)
- SOA (0)
- 互转共享 (3)
- 偶尔java习题 (0)
- Thinks with does (1)
最新评论
-
sassds:
佩服啊 高手
分享一款js特效 -
bhjackson:
学习啦,能否详细介绍下回溯的过程?O(∩_∩)O谢谢
分享回溯法- 找n个数中r个数的组合 -
zk7019311:
了解了解。。。。。
业务层代码复用的一点建议 -
lijie1819:
看到LZ的设计思想,感觉和抽象工厂模式有点相像。
业务层代码复用的一点建议 -
wjjcml1982:
酷毙了!楼主太强悍了!
分享一款js特效
package boke.sort; /** * 快速排序 * * @since jdk1.5及其以上 * @author 毛正吉 * @version 1.0 * @date 2010.05.24 * */ public class QuickSort2 { /** * @param args */ public static void main(String[] args) { int maxSize = 10000; QuickSort2 bs = new QuickSort2(maxSize); for (int i = 1; i <= 100; i++) { int v = (int) (Math.random() * 101); bs.insert(v); } bs.output(); // 原始输出 bs.quickSort(); // 排序 bs.output(); // 排序输出 } private long[] a; // 整型数据容器 private int nElems; // 元素个数 /** * 构造方法 * * @param maxSize */ public QuickSort2(int maxSize) { a = new long[maxSize]; nElems = 0; } /** * 容器放入数据 * * @param value */ public void insert(long value) { a[nElems++] = value; } /** * 输出容器数据 */ public void output() { for (int j = 0; j < nElems; j++) { System.out.print(a[j] + " "); } System.out.println(""); } /** * 快速排序 */ public void quickSort() { recQuickSort(0, nElems - 1); } /** * 快速排序 * * @param left * @param right */ private void recQuickSort(int left, int right) { int size = right - left + 1; if (size <= 3) { manualSort(left, right); } else { long median = manualOf3(left, right); int partition = partitionIt(left, right, median); recQuickSort(left, partition - 1); // 左段排序 recQuickSort(partition + 1, right); // 右段排序 } } /** * * @param left * @param right * @return */ private long manualOf3(int left, int right) { int center = (left + right) / 2; if (a[left] > a[center]) { // 排序: left & center swap(left, center); } if (a[left] > a[right]) { // 排序: left & right swap(left, right); } if (a[center] > a[right]) { // 排序: center & right swap(center, right); } swap(center, right - 1); return a[right - 1]; } /** * * @param left * @param right */ private void manualSort(int left, int right) { int size = right - left + 1; if (size <= 1) { return; } if (size == 2) { if (a[left] > a[right]) { swap(left, right); } return; } else { if (a[left] > a[right - 1]) { swap(left, right - 1); // left,center } if (a[left] > a[right]) { swap(left, right); // left, right } if (a[right - 1] > a[right]) { swap(right - 1, right); // center, right } } } /** * 快速排序 * * @param left * @param right * @param pivot * @return */ private int partitionIt(int left, int right, long pivot) { int leftPtr = left; int rightPtr = right - 1; while (true) { while (a[++leftPtr] < pivot) { ; } while (a[--rightPtr] > pivot) { ; } if (leftPtr >= rightPtr) { break; } else { swap(leftPtr, rightPtr); } } swap(leftPtr, right - 1); return leftPtr; } /** * 交换 * * @param leftPtr * @param rightPtr */ private void swap(int leftPtr, int rightPtr) { long temp = a[leftPtr]; a[leftPtr] = a[rightPtr]; a[rightPtr] = temp; } }
发表评论
-
开散列的简单模拟(一)
2010-06-28 08:33 18281. 散列 散列有两种 ... -
递归和动态规划构造两个字符序列的最长公共字符子序列
2010-06-28 08:28 4499应je朋友要求,所以翻开以前的算法题目,整理了以下,给 ... -
最大公约数的应用 - 分享
2010-06-25 08:08 18591.先看一家大公司笔试题 数组中有n个数据,要将它们顺 ... -
信息数字化解逻辑题分享
2010-06-21 08:09 12641. 前提条件: 将逻辑题目中的信息用数字化描述。 ... -
递归算法分析-分享
2010-06-19 16:09 16101. 深入认识递归 (1) 递 ... -
非递归算法分析实例分享
2010-06-18 15:47 10581 仅仅依赖于问题规模的时间复杂度 (1) 例1: 交换i和 ... -
NP完全性问题
2010-06-18 14:02 7026在学习算法设计与分析时,经常会提到NP完全性问题,到底 ... -
算法分析精述分享
2010-06-18 12:03 8811. 算法分析的评价体系 评价算法的三条主要标准是: ... -
贪婪策略算法的总结分享
2010-06-11 08:30 61011. 贪婪算法描述 贪婪算法又叫登山法,它的根本思想是 ... -
带权有向图 - 边上权值非负情形的单源最短路径问题
2010-06-07 08:57 26901. 问题描述: 给定 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)四
2010-06-07 08:54 137421. 工作分配问题。 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)三
2010-06-07 08:53 110517. 字符统计问题。 编写一个算法,统计在一个输入 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)二
2010-06-07 08:47 13818. 数字迷问题。 A B C ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)一
2010-06-07 08:38 11851. 线程问题。 设计4个线程,其中两个线程每次对j增加 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)
2010-06-07 08:37 18941. 线程问题。 设计 ... -
Java快速排序算法整理(一)
2010-05-31 13:39 662package boke.sort; /** * 快 ... -
Java最小堆实现
2010-05-31 08:29 58631.堆结点 package boke.heap1; /* ... -
Java插入排序代码整理
2010-05-28 14:44 1261package boke.sort; /** * 插 ... -
Java选择排序代码整理
2010-05-28 14:37 1517package boke.sort; /** * 选 ... -
Java冒泡排序代码整理
2010-05-28 14:26 1982Java冒泡排序代码整理: package boke.sor ...
相关推荐
在编程领域,排序算法是计算机科学中的基础概念,它们用于整理数据序列,使其按照特定顺序排列。本主题将深入探讨Java实现的选择排序算法,这是一种简单直观的排序算法,适合新手学习。 选择排序(Selection Sort)...
【Java排序算法详细整理】 在计算机科学中,排序算法是用于对一组数据进行排列的算法。在Java中,实现各种排序算法有助于理解数据结构和算法的原理,同时也能提高编程能力。以下是对Java中常见的几种排序算法的详细...
基于Java按位拆分快速排序算法的基本思想是:首先根据数据中的比特对数据进行划分整理,将待排序列的每个数拆分成(≥2)个k位;然后按照数据由高到低每次截取k位的顺序,将待排序列分成个子序列,高k位相同的数据安排...
插入排序是一种简单直观的排序算法,它的工作原理类似于我们日常生活中整理扑克牌的过程。Java中常见的插入排序实现有三种:直接插入排序、折半插入排序和希尔排序。 1. **直接插入排序**: 直接插入排序的基本...
在实际应用中,根据数据规模和特定场景,可能需要选择更适合的排序算法,例如快速排序、归并排序或者堆排序等,这些高级排序算法在处理大数据集时往往能提供更好的性能。了解和掌握这些算法,有助于提升JAVA程序员的...
在编程领域,排序算法是计算机科学中的基础但至关重要的部分,尤其在Java这样的高级编程语言中。这些算法用于整理一组数据,使其按照特定顺序排列,如升序或降序。以下将详细介绍Java中几种常见的排序算法: 1. ...
在编程领域,排序算法是数据结构与算法学习中的重要组成部分,尤其在Java中,掌握各种排序算法对于优化程序性能至关重要。以下将详细讲解标题和描述中提到的五种排序算法:选择排序、插入排序、自顶向上合并排序、...
直接插入排序是一种基础且简单的排序算法,它的工作原理类似于我们日常生活中的整理扑克牌。在Java中实现这个算法,我们可以从以下几个关键知识点入手: 1. **基本思想**:直接插入排序是通过构建有序序列,对于未...
插入排序是一种简单直观的排序算法,它的工作原理类似于我们日常生活中整理扑克牌的过程。算法分为两个阶段:遍历待排序的数组,将每个元素插入到已排序部分的正确位置。在Java中,可以使用两层循环实现插入排序,...
在编程领域,排序算法是计算机科学中的核心概念,特别是在Java这样的高级编程语言中。排序算法是用来组织和优化数据结构的关键工具,它可以帮助我们快速查找、分析和处理大量数据。本篇将深入探讨Java中实现的几种...
这里我们讨论的是三种经典的排序算法:快速排序、二路归并排序和插入排序,它们都是用Java语言实现的。以下是对这三种排序算法的详细介绍: 1. **插入排序(Insertion Sort)**: 插入排序是一种简单直观的排序...
本文将深入探讨Java中实现的四种基本排序算法:插入排序、交换排序(包括快速排序和冒泡排序)、选择排序以及归并排序。虽然树形选择排序和堆排序在这次实现中未涵盖,但理解这四种排序算法的基本原理和Java实现方式...
在编程领域,排序算法是计算机科学中的核心概念,特别是在Java这样的高级编程语言中。排序算法是用来组织和优化数据结构的关键工具,使得数据按照特定顺序排列。本资源包含了一系列的Java实现的排序算法,旨在帮助...
Java作为一种广泛使用的编程语言,提供了丰富的内置排序方法,如Arrays类中的sort()方法,但了解并实现基本的排序算法有助于理解其工作原理,提高编程能力。以下是标题和描述中提到的一些Java排序算法的详细解释: ...
在编程领域,排序算法是数据结构与算法学习中的基础部分,尤其在Java中,掌握不同的排序算法对于优化程序性能至关重要。本资源包含了七种经典的排序算法实现,它们分别是冒泡排序、插入排序、递归排序(这里可能是指...
在编程领域,排序算法是计算机科学中的核心概念,特别是在Java这样的高级编程语言中。排序算法是用来组织和优化数据结构的关键工具,它使得数据按照特定顺序排列,如升序或降序。本篇将深入探讨Java中的一些经典排序...
在Java编程语言中,排序算法是数据结构与算法领域中的重要组成部分。它们用于对一组数据进行整理,使得数据按照特定顺序排列。在这个示例中,我们看到了三种经典的排序算法:选择排序(Selection Sort),冒泡排序...
插入排序是一种简单直观的排序算法,它的工作原理类似于我们手动整理扑克牌。在已排序的部分中找到新元素的正确位置,并将其插入。DirectInsertSort.java文件包含了此算法的实现。对于小规模数据或部分有序的数据,...