`
samsongbest
  • 浏览: 161965 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

<<数据结构>> 内部排序的java实现

 
阅读更多

1. 插入排序

算法描述: 从左边开始增大序列,把右边的数插到左边排好序的数字当中,比左边大,比右边小。
稳定性: 稳定
比较次数: n(n-1)/2
适用场合: 适用于节点个数比较少的场合。

 

package com.sam;

public class InsertionSort {

	public static void insertSort(int[] a, int n) {
		int i, j;
		int t;
		for (i = 1; i < n; i++) {
			printArray(a);
			t = a[i];
			for (j = i - 1; j >= 0 && t < a[j]; j--)
				a[j + 1] = a[j];
			a[j + 1] = t;
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] a = { 46, 26, 22, 68, 48, 42, 36, 84, 66 };
		int n = 9;
		insertSort(a, n);
		printArray(a);
	}

	public static void printArray(int[] a) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}
}

 

2. 选择排序

算法描述: 向右边减小序列,在所有的数中找一个最小的排在最左边
稳定性: 不稳定
比较次数: n(n-1)/2
适用场合: 适用于节点个数较少的场合。
package com.sam;

public class SelectionSort {

	public static void selectionSort(int[] a, int n) {
		int i, j, k;
		int t;
		for (i = 0; i < n - 1; i++) {
			printArray(a);			
			k = i;
			for (j = i + 1; j < n; j++)
				if (a[k] > a[j])
					k = j;
			t = a[i];
			a[i] = a[k];
			a[k] = t;
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] a = { 46, 26, 22, 68, 48, 42, 36, 84, 66 };
		int n = 9;
		selectionSort(a, n);
		printArray(a);
	}

	public static void printArray(int[] a) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}
}

 

3. 冒泡排序

算法描述: 从上往下,大数往下沉,小数往上冒,排一次,最大数沉在最底下。
稳定性: 稳定
比较次数: n(n-1)/2
适用场合:
package com.sam;

public class BubbleSort {

	public static void bubbleSort(int[] a, int n) {
		int i, j, k;
		n--;
		while (n > 0) {
			j = 0;

			for (i = 0; i < n; i++) {
				if (a[i] > a[i + 1]) {
					k = a[i + 1];
					a[i + 1] = a[i];
					a[i] = k;
					j = i;
				}

			}
			printArray(a);
			n = j;
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] a = { 46, 26, 22, 68, 48, 42, 36, 84, 66 };
		int n = a.length;
		bubbleSort(a, n);

	}

	public static void printArray(int[] a) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}
}

 

4. 快速排序

算法描述: 第一个和最后一个比,找到比它小的数,不忙,再从左边找到比它大的数,然后从小到大,三个节点重新排序,再递归。
稳定性: 不稳定
比较次数: 1.4nlog2n
适用场合: 对拍好序的节点执行效率最差
package com.sam;

public class QuickSort {

	public static void quick(int[] a, int low, int up) {
		int i, j, t;
		if (low < up) {
			i = low;
			j = up;
			t = a[low];
			while (i != j) {
				while (i < j && a[j] > t)
					j--;
				if (i < j)
					a[i++] = a[j];
				while (i < j && a[i] <= t)
					i++;
				if (i < j)
					a[j--] = a[i];
			}
			a[i] = t;
			printArray(a);
			quick(a, low, i - 1);
			quick(a, i + 1, up);
		}

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] a = { 46, 26, 22, 68, 48, 42, 36, 84, 66 };
		int n = a.length;
		quick(a, 0, 8);

	}

	public static void printArray(int[] a) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}
}
 

 

保留行

分享到:
评论

相关推荐

    java实现数据结构内部排序.pdf

    java实现数据结构内部排序.pdf

    AIC的Java课程1-6章

    第3版 机械工业出版社&lt;br&gt; 教学内容和要求&lt;br&gt;知识点 重要程度 使用频度 难度&lt;br&gt;Java 入门 高 中 易&lt;br&gt;变量和运算符 高 高 中&lt;br&gt;控制结构 高 高 易&lt;br&gt;数组 高 高 中&lt;br&gt;方法 很高 高 中&lt;br&gt;封装 很高 很高 难...

    常用数据结构及其算法的Java实现

    本项目主要使用Java实现各种经典常用数据结构及其算法,包括但不仅限于链表、栈,队列,树,图等经典数据结构。 八大排序算法及其实现,具体包括直接插入排序,希尔排序,直接选择排序,堆排序,冒泡排序,快速排序...

    JAVA写的6种内部排序算法简单实现

    去笔试被鄙视了,回来复习数据结构,把排序算法用JAVA写了一遍,不要资源分攒RP,下次笔试一定要过啊^_^

    java 内部排序算法的性能分析

    设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 [需求分析] (1)对起泡排序、直接排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较; (2)待排序表的表长不小于100...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:&lt;#if (x&gt;y)&gt; ...

    #数据结构与算法java实现 #包括排序,线性表,树,图,散列等基础数据结构.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

    java数据结构课程设计

    大二学数据结构的课设(java版) 做得很简单 见笑了 包括背包问题的求解,、内部排序算法的性能分析、停车厂模拟管理程序的设计与实现。

    重庆邮电大学数据结构实验报告八排序

    内部排序的方法 二、实验目的 通过实验,帮助学生由浅入深地掌握各种简单排序和高级排序的基本思想,让他们比较其性能,也让他们更好地理解希尔排序和快速排序的方法。 1.任意输入一个数组并利用简单选择排序算法...

    数据结构(C语言版)\Java数据结构和算

    7.9 内部排序小结 7.10 外部排序 7.11 参考文献和选读材料 第8章 Hash法 8.1 引言 8.2 静态Hash法 8.3 动态Hash法 8.4 Bloom滤波器 8.5 参考文献和选读材料 第9章 优先队列 9.1 单端优先队列和双端优先...

    用Java实现基础数据结构,排序算法、经典算法以及leetcode刷题记录.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

    java数据结构和算法实现.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

    尚硅谷Java数据结构与java算法(Java数据结构与算法).zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): ...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

    Java实现常用数据结构和算法.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

    基本算法与数据结构的Java实现.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): ...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

    java实现基础的数据结构和算法.zip

    算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

    数据结构算法Java实现。关于Java《数据结构算法》核心技术学习积累的例子,是初学者及核心技术巩固的最佳实践。.zip

    算法与数据结构它们分别涵盖了以下主要内容: 数据结构(Data Structures): ...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。

    数据结构与算法分析Java语言描述(第二版)

    不相交集类8.1 等价关系8.2 动态等价性问题8.3 基本数据结构8.4 灵巧求并算法8.5 路径压缩8.6 路径压缩和按秩求并的最坏情形8.7 一个应用小结练习题参考文献第9章 图论算法9.1 若干定义9.2 拓扑排序9.3 最短路径...

Global site tag (gtag.js) - Google Analytics