- 浏览: 197394 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
xueruipp:
应该还能用吧
坦克大战用到的图片素材 -
泽在1993:
...
坦克大战用到的图片素材 -
AzraelWarrior:
...
坦克大战用到的图片素材 -
edison87915:
...
Java OCR 图像智能字符识别技术,可识别中文 -
innger:
为了避免如此我们应该用如下格式:
什么格式啊?
能不能在页 ...
Spring mvc3自己手动写国际化
Java常用的几种排序方式
package com.vanceinfo.util; import java.lang.Math; import java.util.Random; /** *排序 * * @author javajack */ public class OrderTest { public static void main(String args[]) { OrderTest.ExecOrder(2); } /** * 交换值,交换数组的两个值 * @param array * @param i * @param j */ private static void swap(int[] array,int i, int j) { int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } /** * * @param method * 1为升序,2为降序 */ public static void ExecOrder(int method) { int[] array = null; array = initArray(10, 210, 10); //int[] orderarray = bubbleOrder(array,method); int[] orderarray = doubleBubbleOrder(array,method); //int[] orderarray = insertOrder(array, method); //int [] orderarray = quickOrder(array,method); //int[] orderarray = selectOrder(array, method); for (int i = 0; i < orderarray.length; i++) { System.out.println(orderarray[i]); } } /** * 取随机数据,初始化一个数组 * * @param min * 随机数的最小值 * @param max * 最大值 * @param size * 取得随机数的数量 * @return */ public static int[] initArray(int min, int max, int size) { int[] init = new int[size]; for (int i = 0; i < size; i++) { Random ra = new Random(); init[i] = min + (int) (Math.random() * (max - min + 1)); System.out.println(i + "-------" + init[i]); } return init; } /** * 交换排序方法 * 原理:依次交换值 * @param array * @return */ public static int[] convertOrder(int[] array, int method) { for (int i = 0; i < array.length; i++) { for (int j = i + 1; j < array.length; j++) { if (method==2) { if (array[i] < array[j]) swap(array,i,j); }else if (method == 1) { if (array[i] > array[j]) swap(array,i,j); } } } return array; } /**冒泡排序方法 * 原理:从最后一个开始将小的或大的逐渐冒出 * @param array * @param method * @return */ public static int[] bubbleOrder(int[] array,int method) { for(int i=0;i<array.length;i++) { for (int j=array.length -1 ;j>i;j--) { if (method==2) { if (array[i] < array[j]) swap(array,i,j); }else if (method==1) if (array[i] > array[j]) swap(array,i,j); } } return array; } /** * 双向冒泡排序 * 原理:类似于冒泡排序,只不过是双向的 * @param array * @param method * @return */ public static int[] doubleBubbleOrder(int[] array,int method) { int left = 0; int right = array.length -1 ; while (left < right) { for(int i=left;i<=right;i++) { if (method==1) { if (array[left] > array[i]) swap(array,left,i); }else { if (array[left] < array[i]) swap(array,left,i); } } for (int i=left+1;i<=right;i++) { if (method==1) { if (array[right] < array[i]) swap(array,right,i); }else { if (array[right] > array[i]) swap(array,right,i); } } left++; right--; } return array; } /** * 快速排序方法,运用到递归 * 排序原理:随机找到一个值,然后以此值大小进行分为两个数组,大的放左边,小的放右边, * 然后再对左右两侧的数据依次排序根据 * @param array * @param method * @return */ public static int[] quickOrder(int[] array, int method) { quickDeal(array,0,array.length - 1,method); return array; } /** * * @param array * @param begin * 开始位置 * @param end * 结束位置 */ private static void quickDeal(int[] array, int begin, int end,int method) { if (end > begin) { int pos = begin + (int) (Math.random() * (end - begin + 1)); // 计算分隔位置 int posvalue = array[pos]; // 取得分隔位置的值 swap(array,pos,end); //将posvalue放到最end的位置 pos=begin; //初始化pos for (int i=begin; i < end; i++) { if (method==1) { if (array[i] < posvalue) { //当小于posvalue时,将此值移动到pos位置,也就是向前移动 swap(array,pos,i); pos++; //移动后pos增1 } }else if(method == 2) { if (array[i] > posvalue) { //当小于posvalue时,将此值移动到pos位置,也就是向前移动 swap(array,pos,i); pos++; //移动后pos增1 } } } swap(array,pos,end); //end位置的值前移 quickDeal(array,begin,pos -1,method); quickDeal(array,pos+1,end,method); } } /** * 插入排序方法 * 排序原理:抽出一个数,做为排序基序列,然后依次抽出其它数与,与此序列中的数进行比较,放入合适的位置 * @param array * @param method * @return */ public static int[] insertOrder(int[] array, int method) { for (int i = 1; i < array.length; i++) { if (method == 1) { if (array[i - 1] > array[i]) { int tmp = array[i]; // int j = i - 1; do { array[j + 1] = array[j]; j--; } while (j >= 0 && tmp < array[j]); //当j>=0并且 当前值大于数据中j位置的值时移动 array[j + 1] = tmp; //插入排序值 } } else if (method == 2) { if (array[i - 1] < array[i]) { int tmp = array[i]; int j = i - 1; do { array[j + 1] = array[j]; j--; } while (j >= 0 && tmp > array[j]); array[j + 1] = tmp; } } } return array; } /** * 选择排序方法 * 排序原理:每次选择一个最大的或最小的数放到已排序序列中 * @param array * @param method * @return */ public static int[] selectOrder(int[] array,int method) { for (int i=0;i<array.length - 1;i++) { int tmp = array[i]; int pos = i+1; //记录大值或小值的位置 for (int j=i+1;j<array.length;j++) { if (method==1) { if (array[j]<tmp) { tmp = array[j]; pos= j ;//记录大值或小值的位置 } }else if (method==2) { if (array[j]>tmp) { tmp = array[j]; pos= j ;//记录大值或小值的位置 } } } if (tmp != array[i]) swap(array,i,pos); //不相同时交换 } return array; } }
发表评论
-
Java创建WebService服务及客户端实现
2014-02-26 10:48 6136WebService是一种服务的 ... -
新浪博客那样用户自己提交二级域名并自动解析是怎么实现的?
2013-11-27 09:24 809方法一 通过泛域名解析,将某个顶级域名下的所有的子域名都指向 ... -
【转】Java:Session详解
2013-01-18 14:06 966【转】Java:Session详解 书中讲: 以下情况,Se ... -
Eclipse 堆栈和内存大小设置
2012-11-09 00:26 10231, 设置Eclipse内存使用情况 修改ecl ... -
Target runtime Apache Tomcat 6.0 is not defined
2012-11-07 09:52 1005Eclipse导入工程后工程上显示一个小红叉,但工程里没有文 ... -
怎样在Eclipse中使用debug调试程序?
2012-10-10 10:20 0最基本的操作是: 1, 首先在一个java文件中设断点, ... -
Javascript跳转页面和打开新窗口等方法
2012-09-28 21:14 11941.在原来的窗体中 ... -
String与InputStream互转
2012-09-15 02:14 7171//String转inputStream 1. String ... -
Tomcat下面配置二级域名
2012-05-29 11:33 2515(1)开通二级域名支持,即house.map512.cn,pl ... -
Java OCR 图像智能字符识别技术,可识别中文
2012-05-22 15:34 2349几天一直在研究 OCR 技术,据我了解的情况,国内最专 ... -
上传组件
2012-05-02 23:19 925http://seyaa.iteye.com/blog/106 ... -
java实现简单的单点登录
2012-04-09 14:13 928http://www.blogjava.net/xcp/arc ... -
web service 实例
2012-02-20 11:18 863http://wenku.baidu.com/view/fac ... -
URI和URL的不同
2012-01-17 19:40 11981.什么是URI Web上可用的每种资源 - ... -
常用解决疑难杂症的网站
2012-01-09 09:28 953http://stackoverflow.com/questi ... -
java内部类详解
2012-01-05 13:56 1219内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一 ... -
iBATIS的多对多映射配置浅析
2011-12-28 16:58 920http://developer.51cto.com/art/ ... -
Spring security3 中文官方文档
2011-12-23 13:57 1040Spring security 3.0 官方翻译文档 -
Spring security 3.0 配置实例
2011-11-30 23:29 1055http://junjun16818.iteye.com/bl ... -
Java treemap 排序
2011-11-25 11:42 1908TreeMap 和 HashMap 用法大 ...
相关推荐
### Java 实现几种常见排序方法 #### 泡泡排序(Bubble Sort) ...以上是几种常见的排序算法在 Java 中的具体实现,每种算法都有其特点和适用场景。在实际应用中可以根据具体需求选择最合适的排序算法。
java排序算法,包括冒泡、插入、快速、选择等四种最常见的排序算法
根据提供的文件信息,本文将详细...以上就是四种常见排序算法在Java中的实现方式。通过这些基本排序算法的学习,可以帮助开发者更好地理解数据结构和算法的基础知识,同时也能够为后续学习更复杂的算法打下坚实的基础。
Java中几种比较常见的排序方法,像冒泡、快速排序、插入排序登。
JAVA几种常用的经典的排序算法 冒泡 选择 快速 shell 堆排序
Java几种常见的排序算法
本文将深入探讨在Java中实现的几种常见排序算法:冒泡排序、快速排序以及堆排序。 1. **冒泡排序(Bubble Sort)** 冒泡排序是最简单的排序算法之一,通过重复遍历数组,比较相邻元素并交换位置,直到没有任何一对...
这三种排序算法各有特点: - 快速排序:平均时间复杂度为O(n log n),但最坏情况下为O(n^2),适用于大多数情况。 - 堆排序:稳定的时间复杂度O(n log n),原地排序,但性能受数据分布影响。 - 归并排序:最稳定的O(n...
根据提供的文件信息,我们可以总结出该文档主要涉及了五种基于...以上就是关于这五种排序算法的介绍及其基于Java的实现方式。这些排序算法各有优缺点,适用于不同的场景,了解并掌握它们能够帮助开发者更好地解决问题。
本文将详细介绍Java中常见的几种排序算法,包括冒泡排序、快速排序以及选择排序。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,它的主要思想是通过不断比较相邻元素并交换位置,使得较大的元素逐渐“浮”到...
### Java几种常用的排序算法 在Java编程语言中,排序算法是数据处理中不可或缺的一部分,它不仅可以帮助我们组织数据,还能提高程序效率。本篇文章将详细介绍几种常用的Java排序算法:选择排序、冒泡排序以及插入...
根据给定的文件信息,我们可以深入探讨几种在Java中实现的经典排序算法,这些算法是数据结构与算法领域的重要组成部分,广泛应用于各种计算机科学场景。以下是对插入排序(Insertion Sort)、冒泡排序(Bubble Sort...
本文档中介绍了三种常见的排序算法:冒泡排序、选择排序及其优化版本。 1. 冒泡排序(Bubble Sort): 冒泡排序是一种简单的交换排序方法,它的基本思想是通过重复遍历待排序的数组,依次比较相邻元素,如果它们的...
首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一种简单的交换排序,通过重复遍历数组,比较相邻元素并根据需要交换它们,直到没有任何一对数字需要交换。Java中实现冒泡排序的...
本文将详细探讨Java中实现几种常见的排序算法,包括它们的工作原理、时间复杂度以及如何在实际代码中应用。 一、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个...
以下是几种常见的排序算法及其详细解释: 1. 冒泡排序(Bubble Sort): 冒泡排序是最简单的排序算法之一,通过不断交换相邻两个元素的位置来达到排序的目的。其核心思想是每一轮遍历都将最大(或最小)的元素...
以上就是Java中常见的几种排序算法,理解并熟练掌握这些排序算法对于提升编程能力,解决实际问题具有重要意义。在实际开发中,应根据数据特性和性能需求选择合适的排序算法。例如,对于小规模数据,简单的排序算法如...
这类算法的时间复杂度通常在 O(nlogn) 到 O(n^2) 之间,主要包括以下几种: 1. **冒泡排序**: - **平均情况时间复杂度**:O(n^2) - **最好情况时间复杂度**:O(n) — 当输入序列已经是有序时 - **最坏情况时间...