`

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;
	}
}

 

分享到:
评论

相关推荐

    Java范例程序.rar_Java范例

    【Java范例程序.rar_Java范例】是一个包含基础Java编程示例的压缩包,适合初学者或希望巩固基础知识的开发者。这个压缩包中的资源旨在帮助用户理解和掌握Java语言的关键概念,通过实际代码来演示如何编写和运行Java...

    Java通用范例开发金典配套源代码

    【Java通用范例开发金典配套源代码】涵盖了Java编程中的多个重要知识点,包括类的处理、静态成员的使用、类反射、字符处理、数组与集合的处理以及窗体效果等。以下是对这些知识点的详细解释: 1. **类的处理**: -...

    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范例开发大全》.pdf

    《Java范例开发大全》是一本详尽的Java编程实践指南,涵盖了从基础语法到高级特性的各种示例。这本书通过377个精心设计的实例,旨在帮助读者深入理解和掌握Java编程技术。 1. **基础语法**:书中首先介绍了如何开发...

    java实战经典学习笔记

    - 数组排序、查找等操作。 #### 五、面向对象基础 - **面向对象的基本概念** - 对象、类、属性、方法。 - 封装、继承、多态。 - **类与对象** - 类的定义。 - 对象的创建和使用。 - **封装性** - 私有成员...

    JAVA 范例大全 光盘 资源

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

    JAVA经典教材笔记

    - Java 5引入的增强for循环:简化了数组遍历过程。 - Java 8的流API:提供了更强大的数组处理能力。 #### 第五章:面向对象(基础) - **面向对象、类与对象的定义** - 面向对象编程的基本概念:封装、继承、...

    《Java范例开发大全》.docx

    《Java范例开发大全》是一本面向初学者和进阶者的学习资料,涵盖了广泛的Java编程实践。这本书通过377个实例,详细讲解了Java语言的基础知识和常见操作,旨在帮助读者深入理解Java编程概念并提升编程技能。以下是...

    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範例-使用請尊重作者

    在本Java范例集合中,我们探讨了一系列的编程示例,涵盖了从基础概念到复杂应用的广泛主题。这些示例不仅适用于初学者,也对有经验的开发者有所帮助,旨在加深对Java语言的理解和实践能力。"吉他手元件&範例"这个...

    Java常见排序算法.pdf

    这些排序算法在Java中的实现为学习和理解各种排序算法的工作原理和实现提供了很好的范例。了解这些算法不仅对于掌握Java语言本身是重要的,对于提升编程逻辑思维以及解决实际编程问题也是非常有帮助的。此外,在进行...

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

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

    java实战范例

    Java实战范例主要展示了如何在Java编程中实现多线程操作。在第一个实例中,我们看到如何创建并启动两个线程来对同一个数组进行不同顺序的排序和输出。这个例子的核心在于`IntPrint`类,它继承自`Thread`类。`Int...

    Java 8函数式编程 范例

    比如,我们可以用`Arrays::sort`方法来排序一个数组: ```java int[] array = {3, 1, 4, 1, 5, 9}; Arrays.sort(array, Integer::compareTo); ``` ### 并行流 Stream API还支持并行流,利用多核处理器的并行计算...

    999个c程式范例的光碟 (algorithms)

    - 排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,以及它们的时间复杂度和空间复杂度分析。 - 搜索算法:线性搜索、二分搜索、哈希表搜索,了解不同搜索策略的优缺点。 - 图形算法:...

    Cracking-the-code-interview-solution-java.rar_The Interview_crac

    例如,二分查找在已排序数组中的效率非常高,动态规划可以解决许多优化问题,如背包问题、最长公共子序列等。 在CtCI中,还会涉及到字符串处理,如KMP算法、模式匹配、字符串反转等。同时,位操作也是面试中的常客...

Global site tag (gtag.js) - Google Analytics