`
Fox_ed
  • 浏览: 3763 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

几种排序方法的实现

    博客分类:
  • java
阅读更多
public class Sort{
	
	/**
	 * 直接插入排序
	 * @param arr
	 * @return
	 */
	public static int[] insertSortImpl(int[] arr) {
		if(arr != null && arr.length > 0) {
			int length = arr.length;
			for(int i = 1; i < length; i++) {
				int currentData = arr[i];
				int tmp = i;
				while(tmp > 0 && arr[tmp - 1] > currentData) {
					arr[tmp] = arr[tmp -1];
					tmp--;
				}
				arr[tmp] = currentData;
			}
		}
		return arr;
	}
	
	/**
	 * 折半插入排序
	 * @param arr
	 * @return
	 */
	public static int[] halfInsertSort(int[] arr) {
		if(arr != null && arr.length >0) {
			for(int k = 0 ; k < arr.length; k++) {
				int length = arr.length;
				int insertDate = arr[length - 1];//将最后一个元素当中待插入元素
				int low = 0;
				int high = length - 2;
				while(low <= high) {
					int middle = (low + high) / 2;//获得数组中间元素的下标
					if(insertDate < arr[middle]) {
						high = middle - 1;
					} else {
						low = middle + 1;
					}
				}
				for(int j = length - 1; j > high + 1; j--) {
					arr[j] = arr[j-1];
				}
				arr[high + 1] = insertDate;
			}
		}
		return arr;
	}
	
	/**
	 * 希尔排序
	 */
	public static int[] shellSort(int[] arr) {
		int temp;
		int length = arr.length;
		for(int k = length/2; k>0; k--) {
			for(int i = k; i<length; i++) {
				if(arr[i-k] > arr[i]) {
					temp = arr[i-k];
					arr[i-k] = arr[i];
					arr[i] = temp;
				}
			}
		}
		return arr;
	}
	
	/**
	 * 冒泡排序
	 */
	public static int[] maoPao(int[] arr) {
		int length = arr.length;
		int temp;
		for(int i=length -1; i>0;i--) {
			for(int j=0;j<i;j++) {
				if(arr[j] > arr[j+1]) {
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] =temp;
				}
			}
		}
		return arr;
	}
}
分享到:
评论

相关推荐

    java堆排序和几种排序方法实现代码.pdf

    此外,代码中还展示了其他几种排序方法的实现,包括冒泡排序、双路冒泡排序、插入排序、快速排序和选择排序。这些排序算法各有特点: - 冒泡排序:通过不断交换相邻的逆序元素,逐步将最大(或最小)元素移到数组...

    java堆排序和几种排序方法实现代码文.pdf

    - 在`OrderTest`类中,还提到了其他几种排序算法的实现,如冒泡排序、双路冒泡排序、插入排序、快速排序和选择排序。这些排序算法各有特点,适用于不同的场景。 - 冒泡排序是一种简单的排序,通过不断交换相邻的...

    数据结构中几种排序的实现

    数据结构中几种排序的实现 数据结构中几种排序的实现

    Java实现几种常见排序方法

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

    几种排序方法

    以下是对标题“几种排序方法”和描述中提到的几种排序算法的详细介绍: 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,它通过重复遍历待排序的数组,比较相邻元素并交换(如果需要)来完成排序。这个过程会...

    常见几种排序方式(选择排序,冒泡排序,快速排序,希尔排序,堆排序,插入排序)

    常见的几种排序方式,包括选择排序,冒泡排序,快速排序,希尔排序,堆排序,插入排序。vs2008实现,对话框方式,主要实现字符串的由小到大...点击“几种排序方法.vcproj“运行。字符集使用多字节集,不能用UNICODE。

    Java几种排序方法

    根据给定的信息,本文将详细介绍Java中的四种基本排序算法:冒泡排序、插入排序、快速排序和选择排序。...以上四种排序算法各有优缺点,适用场景也不同。在实际应用中,根据具体需求选择合适的排序算法是非常重要的。

    javascript 的几种排序方法

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

    php实现的几种排序方法

    php实现的几种排序方法,包括插入排序,选择排序,冒泡排序、快速排序

    C语言几种排序算法的实现

    最后,堆排序是利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。堆排序分为建堆和调整堆两个步骤,最后将堆顶...

    几种排序方法的比较

    随即生成一组数据 可以实现三种排序方法的速度比较

    用几种排序方法对随机产生的数据排序

    以下是关于这几种排序方法的详细介绍: 1. **堆排序(Heap Sort)** 堆排序是一种基于比较的原地排序算法,它利用了完全二叉树的特性。首先构建大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,再调整堆,重复此...

    几种内排序的方法 数据结构报告c++代码

    在这个数据结构报告中,我们将深入探讨七种不同的内排序算法:简单选择排序、冒泡排序、插入排序、快速排序、两路合并排序以及堆排序。这些排序算法在C++语言环境下进行了实现,并且包含了详细的源代码和实验报告,...

    几种常见排序算法实现

    几种常见排序 基于比较的排序算法: 下界是 nlgn 1.1 SelectionSort:每次选出最下的元素,放在当前循环最左边的位置。 1.2 BubbleSort:每次比较相邻的两个数,使得最大的数像气泡一样冒到最右边。 1. 3 Insertion...

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

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

    几种排序算法的代码实现

    根据给定文件中的标题、描述、标签以及部分内容,我们可以总结出以下关于几种...以上是对几种排序算法及其代码实现的详细介绍,每种算法都有其独特的优势和应用场景,在实际开发中可以根据具体需求选择合适的排序方法。

    C语言几种排序代码

    每种排序算法都有其适用场景,例如,快速排序和归并排序在大数据量时表现出色,而冒泡排序和插入排序则适合小规模数据。理解并熟练掌握这些排序算法的C语言实现,对于提升编程技能和解决实际问题具有重要意义。在...

    几种常用排序算法的C语言实现

    一些常用排序算法的C语言实现,包括直接选择排序,希尔排序,直接插入排序,快速排序,归并排序,冒泡排序,堆排序

    java几种排序方法代码

    使用java实现的选择、冒泡、插入、快速、希尔排序以及折半查找

Global site tag (gtag.js) - Google Analytics