`

数组常见几种排序方法

阅读更多

Java中几种常见的排序方法

 

1.冒泡排序

/**
	 * 对指定的数组进行排序 把最小的排出来,然后再排第二小的。。。。
	 * 
	 * @param arr
	 *            要排序的数组
	 * @return 返回排序之后的数组
	 */
	public int[] maopao(int[] arr) {//int[] :返回值类型
		for (int i = 0; i < arr.length; i++) {
			for (int j = i + 1; j < arr.length; j++) {//第i个与第i+1个比较再与第i+2个比较
				if (arr[i] > arr[j]) {
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;//把最小的比出来放在最前面
				}// end if
			}// end for{}
		}// end for{ {} }
		return arr;
	}// end int[] mapao()

 

2.选择排序

         每一趟从待排序的数据元素中选择最小的一个元素,顺序放在已排序好的数列的最后,知道全部排完:

/**
	 * 我怎么感觉和那个冒泡排序没什么区别啊? 选择排序
	 * 
	 * @param arr
	 * @return
	 */
	public int[] xuanze(int[] arr) {//int[] :返回值类型
		for (int i = 0; i < arr.length; i++) {
			int lowerindex = i;
			// 找出最小值的索引
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[j] < arr[lowerindex]) {
					lowerindex = j;
				}//end if()
			}//end for(){}
			// 交换
			int temp = arr[i];
			arr[i] = arr[lowerindex];
			arr[lowerindex] = temp;
		}//end for{ {} }
		return arr;
	}//end int[] xuanze

 选择排序示例:

        初始关键字 [49 38 65 97 76 13 27 49]

  第一趟排序后 13 [38 65 97 76 49 27 49] //直接把13取出来

  第二趟排序后 13 27 [65 97 76 49 38 49] //再把27取出

  第三趟排序后 13 27 38 [97 76 49 65 49]

  第四趟排序后 13 27 38 49 [76 97 65 49 ]

  第五趟排序后 13 27 38 49 49 [97 65 76]

  第六趟排序后 13 27 38 49 49 65 [97 76]

  第七趟排序后 13 27 38 49 49 65 76 [97]

  最后排序结果 13 27 38 49 49 65 76 97

 

3.插入排序

         将一个数据插入到已经排好序的有序数据中,从而得到一个新的,个数加一的有序数据:

/**
	 * 插入排序
	 * 
	 * @param arr
	 * @return
	 */
	public int[] charu(int[] arr) {// int[] :返回值类型
		for (int i = 1; i < arr.length; i++) {
			for (int j = i; j > 0; j--) {
				if (arr[j] < arr[j - 1]) {// 与自己前面的比较
					int temp = arr[j];// 交换
					arr[j] = arr[j - 1];
					arr[j - 1] = temp;
				}// end if()
			}// end for(){}
		}// end for for()
		return arr;
	}// end int[]charu

 插入排序示例:

 

4.希尔排序

        插入排序的一种(还不怎么懂);

/**
	 * 希尔排序
	 * 
	 * @param arr
	 * @return
	 */
	public int[] shell(int[] arr) {
		// 分组
		for (int increment = arr.length / 2; increment > 0; increment /= 2) {
			// 每个组内排序
			for (int i = increment; i < arr.length; i++) {
				int temp = arr[i];
				int j = 0;
				for (j = i; j > increment; j -= increment) {
					if (temp < arr[i - increment]) {
						arr[j] = arr[i - increment];
					} else {
						break;
					}// end if
				}// end for{}
				arr[j] = temp;
			}// end for for{}
		}// end for for for{}
		return arr;
	}// end shell(){}

 

  • 大小: 4.5 KB
0
0
分享到:
评论

相关推荐

    数组的几种排序方法

    本篇文章将深入探讨数组的几种常见排序方法,包括冒泡排序、选择排序和插入排序,这些都是基础且实用的排序算法,对于理解更复杂的排序算法有着重要的铺垫作用。 ### 冒泡排序 冒泡排序是一种简单直观的排序算法。...

    易语言两种文本型数值数组去重复并排序源码

    下标法是一种基于数组下标的去重和排序方法。首先,我们遍历整个数组,对于每一个元素,我们检查它是否已经存在于一个新的临时数组中(通常使用一个辅助变量记录已存在的元素)。如果当前元素未被添加到临时数组,...

    使用快速排序法对一维数组进行排序

    常见的方法有以下几种: - **首尾取中法**:取数组的第一个元素和最后一个元素的中位数作为基准。 - **三数取中法**:取数组首、中、末三个元素的中位数作为基准,这可以避免最坏情况的发生,提高稳定性。 - **随机...

    Java实现几种常见排序方法

    ### Java 实现几种常见排序方法 #### 泡泡排序(Bubble Sort) 泡泡排序是一种简单的排序算法,它重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复...

    无序数组排序

    例如,JavaScript的`Array.prototype.sort()`方法可以方便地对数组进行排序,但默认的排序规则可能不是完全数字升序,因此在排序数字数组时需要注意。 总的来说,这个任务涉及到了字符串处理、数组操作和排序算法等...

    java数组排序

    本篇将详细探讨几种常见的排序算法及其在Java中的实现。 首先,让我们从最简单的排序算法——冒泡排序开始。冒泡排序是一种直观的排序方法,通过重复遍历数组,每次比较相邻两个元素并根据需要交换它们的位置,使得...

    数据结构常见排序的几种方法

    本程序涵盖了数据结构中常见的几种排序方法,下面将对这些排序算法进行详细介绍。 1. 冒泡排序(Bubble Sort) 冒泡排序是最简单的排序算法之一。它通过不断比较相邻元素并交换位置来实现排序,重复这一过程,直到...

    最常见的几种排序算法,来看看

    这里我们将深入探讨几种最常见的排序算法,包括冒泡排序、选择排序、插入排序、快速排序以及归并排序。 1. 冒泡排序(Bubble Sort) 冒泡排序是最基础的排序算法之一,它通过不断地比较相邻元素并交换位置来实现...

    易语言数组排序算法集合

    下面将详细介绍其中提及的几种排序算法。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,通过重复遍历待排序的数组,比较相邻元素并交换顺序,使较大的元素逐渐“冒”到数组的末尾。其主要步骤是:比较相邻...

    最快的排序算法 千万级亿级数组排序最快的实现方法,排序算法数据结构

    快速排序算法是一种 divide-and-conquer 排序算法,它通过选择数组中的一个元素作为分区点,将数组分成两个部分,然后递归地排序这两个部分。快速排序算法的时间复杂度为O(n log n),因此它在大规模数据中的应用是...

    数组从小到大排列 方法

    根据给定的文件信息,我们可以总结...本文介绍了几种常见的排序算法,包括冒泡排序、插入排序和选择排序,并详细分析了给定的Java代码实现插入排序的过程。这些知识点对于理解排序算法的基本思想和实现细节非常有帮助。

    c++数组排序

    本篇将深入探讨几种经典排序算法,这些算法不仅理论性强,而且在实际开发中具有广泛的应用。 首先,我们来了解最基本的冒泡排序(Bubble Sort)。冒泡排序是一种简单的排序方法,通过不断交换相邻的逆序元素,使...

    Golang算法问题之数组按指定规则排序的方法分析

    ### Golang算法问题之数组按指定规则排序的方法分析 #### 背景介绍 在处理数据结构时,经常需要对数组或列表中的元素按照特定的规则进行排序。本篇文章将探讨如何在Go语言中实现这样的功能,即对于一个多维数组...

    数组排序数组排序数组排序数组排序数组排序

    标题和描述中提到了几种经典的数组排序算法,包括选择排序、冒泡排序和插入排序,这些都是数据结构与算法中的基础内容。接下来,我们将对这些排序算法进行详细的介绍和分析。 ### 选择排序 选择排序是一种简单直观...

    数组快速排序法后的统计分析

    数组排序是计算机科学中常见的基础操作,快速排序以其平均时间复杂度为O(n log n)而受到广泛关注。在实际应用中,快速排序通常比其他O(n^2)时间复杂度的排序算法更快,尤其是在处理大量数据时。 均值、方差和标准差...

    c语言的基本算法 数组排序

    数组排序算法在C语言中有着广泛的应用,不仅限于上述的几种方法。其他常见的排序算法还包括冒泡排序、插入排序、快速排序、归并排序等,每种都有其适用的场景和优缺点。在实际编程中,根据数据规模、稳定性、空间...

    几种常见的排序方法

    几种常见的排序方法 1. 选择排序法基本思想: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 2.插入排序(Insertion Sort)的基本思想是...

    javascript 的几种排序方法

    以上就是JavaScript中常用的几种排序方法。理解并熟练运用它们,能够帮助你在处理数据时更加游刃有余。在实际项目中,可以根据具体需求选择合适的方法,或者利用现有的库和工具提高代码的可读性和可维护性。

    java教程-数组应用+冒泡排序+选择排序+插入排序

    Java数组应用和排序算法 一维数组的应用 数组是一组相同类型的数据的有序集合,适用于集中管理类型相同,用途相近的...排序算法是数组操作中的一种重要应用,它可以将数组中的元素排序,提高数组的可读性和可维护性。

Global site tag (gtag.js) - Google Analytics