`

JAVA范例 五)数组---数组的排序

阅读更多

数组的排序

实例74 冒泡排序法

public class SortArray_01 {
	public static void main(String args[]) {
		int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55 };		// 创建一个初始化的一维数组array
		System.out.println("未排序的数组:");
		for (int i = 0; i < array.length; i++) {					// 遍历array数组中的元素
			System.out.print(" " + array[i]);					// 输出数组元素
			if ((i + 1) % 5 == 0)							// 每5个元素一行
				System.out.println();
		}
		int mid;							// 定义一个中间变量,起到临时存储数据的作用
		for (int i = 0; i < array.length; i++) {		// 执行冒泡排序法
			for (int j = i; j < array.length; j++) {
				if (array[j] < array[i]) {
					mid = array[i];
					array[i] = array[j];
					array[j] = mid;
				}
			}
		}
		System.out.println("\n使用冒泡法排序后的数组:");
		for (int i = 0; i < array.length; i++) {				// 遍历排好序的array数组中的元素
			System.out.print(" " + array[i]);				// 输出数组元素
			if ((i + 1) % 5 == 0)
				System.out.println();					// 每5个元素一行
		}
	}
}

 

实例75 数组递增排序

import java.util.Arrays;
import java.util.Random;

public class SortArray_02 {
	public static void main(String[] args) {
		Random rd = new Random();
		int[] array = new int[15]; 				// 声明数组
		System.out.println("没有使用sort方法前的数组:");
		for (int i = 0; i < array.length; i++) {		// 利用随机数随意产生15个0~20之间的随机数
			array[i] = rd.nextInt(20);			// 给array数组赋值
			System.out.print(" " + array[i]);
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		Arrays.sort(array);					// 对array数组进行升序排序
		System.out.println("\n使用sort方法后的数组:");
		for (int i = 0; i < array.length; i++) {		// 将array数组中的数据输出
			System.out.print(" " + array[i]);
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
	}
}

 

实例76 部分数组递增排序

import java.util.Arrays;
import java.util.Random;

public class SortArray_03 {
	public static void main(String[] args) {
		Random rd = new Random();
		int[] array = new int[15]; 				// 声明数组
		System.out.println("没有使用sort方法前的数组:");
		for (int i = 0; i < array.length; i++) {		// 利用随机数随意产生15个0~20之间的随机数
			array[i] = rd.nextInt(20);			// 给array数组赋值
			System.out.print(" " + array[i]);
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		Arrays.sort(array,5,14);			// 对array数组中的第5个元素~第13个元素之间进行升序排序
		System.out.println("\n使用sort方法后的数组:");
		for (int i = 0; i < array.length; i++) {	// 将array数组中的数据输出
			System.out.print(" " + array[i]);
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
	}
}

 

实例77 选择排序法

public class SortArray_04 {
	public static void main(String args[]) {
		int[] array = { 14, 5, 86, 4, 12, 3, 51, 13, 11, 2, 32, 6 };		// 创建一个初始化的一维数组array
		int keyValue;						// 表示最小的元素值
		int index;							// 表示最小的元素值的下标
		int temp;							// 中间变量
		System.out.println("未排序的数组:");
		for (int i = 0; i < array.length; i++) {		// 遍历array数组中的元素
			System.out.print(" " + array[i]);		// 输出数组元素
			if ((i + 1) % 5 == 0)				// 每5个元素一行
				System.out.println();
		}
		for (int i = 0; i < array.length; i++) {		// 使用选择排序法的核心
			index = i;
			keyValue = array[i];
			for (int j = i; j < array.length; j++)
				if (array[j] < keyValue) {
					index = j;
					keyValue = array[j];
				}
			temp = array[i];
			array[i] = array[index];
			array[index] = temp;
		}
		System.out.println("\n使用选择排序法后的数组:");
		for (int i = 0; i < array.length; i++) {			// 遍历排好序的array数组中的元素
			System.out.print(" " + array[i]);			// 输出数组元素
			if ((i + 1) % 5 == 0)
				System.out.println();				// 每5个元素一行
		}
	}
}

 

实例78 快速排序法

public class SortArray_05 {
	public static void main(String args[]) {
		int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20, 15 };
		System.out.println("排序前的数组:");
		for (int i = 0; i < intArray.length; i++) {
			System.out.print(" " + intArray[i]);			// 输出数组元素
			if ((i + 1) % 5 == 0)						// 每5个元素一行
				System.out.println();
		}
		System.out.println();
		int[] b = quickSort(intArray, 0, intArray.length - 1);	// 调用quickSort
		System.out.println("使用快迅排序法后的数组:");
		for (int i = 0; i < b.length; i++) {
			System.out.print(" " + b[i]);
			if ((i + 1) % 5 == 0)						// 每5个元素一行
				System.out.println();
		}
	}
	public static int getMiddle(int[] array, int left, int right) {
		int temp;
		// 进行一趟快速排序,返回中心点位置
		int mid = array[left];							// 把中心置于a[0]
		while (left < right) {
			while (left < right && array[right] >= mid)
				right--;
			temp = array[right]; 						// 将比中心点小的数据移动到左边
			array[right] = array[left];
			array[left] = temp;
			while (left < right && array[left] <= mid)
				left++;
			temp = array[right]; 						// 将比中心点大的数据移动到右边
			array[right] = array[left];
			array[left] = temp;
		}
		array[left] = mid; 							// 中心移到正确位置
		return left; 								// 返回中心点
	}
	public static int[] quickSort(int[] array, int left, int right) {// 快速排序法
		if (left < right - 1) {			// 如果开始点和结点没有重叠的时候,也就是指针没有执行到结尾
			int mid = getMiddle(array, left, right);		// 重新获取中间点
			quickSort(array, left, mid - 1);
			quickSort(array, mid + 1, right);
		}
		return array;
	}
}

 

分享到:
评论

相关推荐

    C++大学教程

    1.9 Java、Internet与万维网--------------------------------------------7 1.10 其它高级语言------------------------------------------------------8 1.11 结构化编程-----------------------------------...

    java范例开发大全(pdf&源码)

    实例76 部分数组递增排序 103 实例77 选择排序法 104 实例78 快速排序法 106 第6章 字符串(教学视频:138分钟) 108 6.1 字符串类String 108 实例79 创建字符串类 108 实例80 如何使用charAt()方法计算重复字符 109...

    JAVA 范例大全 光盘 资源

    实例14 数组排序 35 实例15 数组搜索 37 实例16 去掉数组重复数字 39 实例17 求质数(素数) 41 实例18 矩阵的加减和转置 43 实例19 数组实现顺序栈与队列 46 实例20 Arrays数组的应用 50 第5章 面向对象设计...

    java范例开发大全源代码

     实例76 部分数组递增排序 103  实例77 选择排序法 104  实例78 快速排序法 106  第6章 字符串(教学视频:138分钟) 108  6.1 字符串类String 108  实例79 创建字符串类 108  实例80 如何使用...

    java范例开发大全

    实例76 部分数组递增排序 103 实例77 选择排序法 104 实例78 快速排序法 106 第6章 字符串(教学视频:138分钟) 108 6.1 字符串类String 108 实例79 创建字符串类 108 实例80 如何使用charAt()方法计算重复字符 109...

    Java范例开发大全 (源程序)

     实例76 部分数组递增排序 103  实例77 选择排序法 104  实例78 快速排序法 106  第6章 字符串(教学视频:138分钟) 108  6.1 字符串类String 108  实例79 创建字符串类 108  实例80 如何使用charAt()...

    Java范例开发大全(全书源程序)

    Java范例开发大全(全书源程序),目录如下: 第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境...

    Java开发技术大全(500个源代码).

    SortDemo.java 排序示例 travelTwoDime.java 遍历二维数组 traversing.java 遍历一维数组 useStrBuf.java 使用StringBuffer示例 useString.java 使用String示例 YanghuiTri.java 构造和显示杨辉三角 第6章 ...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    Java开发详解.zip

    031305_【第13章:Java类集】_排序及重复元素说明笔记.pdf 031306_【第13章:Java类集】_SortedSet接口笔记.pdf 031307_【第13章:Java类集】_Iterator接口笔记.pdf 031308_【第13章:Java类集】_ListIterator接口...

    Java语言的科学与艺术 斯坦福大学经典教材

    11.11 编程练习 第12章 搜索与排序 12.1 搜索 12.2 排序 12.3 评估算法效率 12.4 使用数据文件 12.5 小结 12.6 复习题 12.7 编程练习 第13章 数组与ArrayList类 13.1 ArrayList类回顾 13.2 HashMap类 13.3 Java集合...

    Java语言的科学与艺术(国外计算机科学经典教材)

     1.6 Java和面向对象范例  1.7 Java和WWW  1.8 小结  1.9 复习题 第2章 编程示例  2.1 “Hello world”程序  2.2 编程过程的观点  2.3 两数相加的程序  2.4 编程习语和模式  2.5 类和对象  2.6 图形程序 ...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。  《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、...

    C++大学教程,一本适合初学者的入门教材(part1)

    4.6 排序数组 4.7 实例研究:用数组计算平均值、中数和模 4.8 查找数组:线性查找与折半查找 4.9 多下标数组 4.10 有关对象的思考:确定类的行为 小结 术语 自测练习 自测练习答案 练习 递归练习 第5章 指针与...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    据我所知,JSP基于Java,因此Java程序员可以轻松开始编码。ASP只是一个一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。 mod_perl与Perl一样强大,只是更快一些。 二、PHP入门 PHP...

    C++大学教程,一本适合初学者的入门教材(part2)

    4.6 排序数组 4.7 实例研究:用数组计算平均值、中数和模 4.8 查找数组:线性查找与折半查找 4.9 多下标数组 4.10 有关对象的思考:确定类的行为 小结 术语 自测练习 自测练习答案 练习 递归练习 第5章 指针与...

    Tcl_TK编程权威指南pdf

    对列表进行排序 split命令 join命令 相关章节 第6章 控制结构命令 if then else switch while foreach for break与continue catch error return 第7章 过程与作用域 proc命令 使用rename来改变命令...

Global site tag (gtag.js) - Google Analytics