`
qing_gee
  • 浏览: 121883 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

回顾篇之Java的插入排序

    博客分类:
  • Java
阅读更多

       前一段时间看到了一片文章《为什么我们要像驯化小狗狗一样驯化算法》,就一直在想我是否需要重头开始做一遍Java的基本算法排序,无论自己现在水平几何,都要回顾这些经典的,值得回味的程序片段。

       那么接下来我们就一睹为快了,看看你是否已经忘记了她,还是她依然活在你深深的脑海里。

package com.honzh.mwq.sort;

/**
 * 插入排序(原则就是当前位置的数和前面位置的数进行比较,如果当前位置的数小于之前的数,则交换位置).
 * 
 * @author qinge
 * 
 */
public class Inserting {

	public static void main(String[] args) {
		// 数组元
		int[] orgins = { 2, 1, 5, 4, 9, 8, 6, 7, 10, 3, 3 };
		
		// 排序前的数
		for (int num : orgins) {
			System.out.print(num + "、");
		}
		System.out.println();

		// 从第二个位置开始,因为第一个位置和他前面的位置(0个位置)相比,肯定为最小
		for (int index = 1; index < orgins.length; index++) { // 复杂度为数组元的长度,或者说n
			// 当前数
			int curValue = orgins[index];

			// 前一位的下标
			int preIndex = index - 1;

			// 当前数和前一位数相比,如果小,则交换位置,当前数继续和前一位数的前一位相比
			while (preIndex >= 0 && curValue < orgins[preIndex]) {// 复杂度为1+2+3+...+(n-1)
				// 前一位数的下一位等于前一位的数
				orgins[preIndex + 1] = orgins[preIndex];

				// 前一位的数等于当前数
				orgins[preIndex] = curValue;

				// 继续(前一位的前一位)
				preIndex = preIndex - 1;
			}
		}

		// 排序后的数
		for (int num : orgins) {
			System.out.print(num + "、");
		}
	}

}

 

看完感觉怎么样,你是否想起了她?

2
0
分享到:
评论

相关推荐

    java知识点回顾

    根据提供的文件信息,我们可以整理出以下关于Java的重要知识点回顾: ### 1. Java 基本数据类型 Java 提供了多种基本数据类型,包括数值型、字符型和布尔型等。 - `byte`: 占用 1 字节,取值范围为 -128 至 127。...

    java数据结构与算法+applet与源码

    算法则是解决问题的具体步骤,包括排序(如冒泡排序、选择排序、插入排序、快速排序、归并排序等)、搜索(如深度优先搜索、广度优先搜索)、递归、动态规划、贪心策略等。理解并熟练运用这些算法可以显著提升程序的...

    JAVA经典算法90题【含源码】

    首先,"JAVA经典算法40题.doc"可能包含了一些基础的算法题目,如排序(冒泡排序、选择排序、插入排序、快速排序、归并排序)、搜索(线性搜索、二分搜索)、图论(最短路径问题、拓扑排序)以及动态规划等。...

    数据结构与算法Java版

    排序算法是算法中最基础也是最重要的部分之一,包括冒泡排序、选择排序、插入排序、快速排序等。 - **冒泡排序**:通过重复比较相邻两个元素并交换顺序,使得较大的元素逐步向后移动,最终完成排序。 - **快速排序*...

    14丨排序优化:如何实现一个通用的、高性能的排序函数?1

    对于小规模数据,时间复杂度为O(n log n)的排序算法,如插入排序或冒泡排序,可能是可行的选择。然而,面对大规模数据,O(n log n)时间复杂度的算法如归并排序、快速排序和堆排序更为高效。其中,快速排序和堆排序...

    Java期末复习资料

    常见的编程题目可能包括排序算法(冒泡、选择、插入、快速等)、搜索算法(线性、二分查找)、数据结构(栈、队列、链表、树等)的应用,以及文件操作和网络编程等。 复习Java时,应重视以下几个关键点: - **基础...

    newreview_die4ix_Java数据结构_

    8. 排序算法:如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,它们对数组或其他数据结构进行排序。 文件名"newreview"可能代表作者对这些主题进行了回顾和总结,可能包含了各种实例、练习和解决...

    java数据结构和算法实现

    冒泡排序是最简单的排序算法之一,通过不断交换相邻的错误顺序元素来实现排序。在Java中,可以使用嵌套循环来实现冒泡排序。虽然冒泡排序效率相对较低,但对于小规模数据或教学用途,它是很好的选择。冒泡排序的时间...

    DS and Algorithm Ananlysis in Java

    9. **排序算法**:学习各种排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,了解它们的优缺点和适用场景。 10. **图算法**:研究图的遍历(如深度优先搜索和广度优先搜索)以及最短路径...

    经典算法问题的java实现<一>

    1. **排序算法**:如快速排序(Quick Sort)、归并排序(Merge Sort)、冒泡排序(Bubble Sort)和插入排序(Insertion Sort)。排序算法在数据处理中极为重要,用于将一组数据按照特定顺序排列。 2. **搜索算法**...

    删除排序链表中的重复元素(java代码).docx

    本篇文章主要探讨如何在Java中编写程序来删除一个已排序链表中的所有重复元素。链表是一种常见的线性数据结构,其特点是每个元素由数据域和指向下一个元素的指针构成。在处理链表时,经常需要进行诸如插入、删除等...

    二叉排序树问题 课程设计报告

    这样的结构使得二叉排序树在查找、插入和删除操作上具有较高的效率。 2. **二叉链表储存方式**:在实际编程中,二叉树通常通过链表结构来表示,每个节点包含数据域和两个指针域,分别指向左孩子和右孩子。这种存储...

    java算法源码大全

    1. **排序算法**:如快速排序、归并排序、冒泡排序、插入排序、选择排序、堆排序等。这些排序算法展示了不同的时间复杂度和空间复杂度,适用于不同规模的数据处理。 2. **查找算法**:如二分查找、线性查找、哈希...

    Java数据结构和算法(第二版)

    接着,“算法的概述”章节将涵盖排序、查找和其他常见算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、二分查找等。这些算法是解决问题的基础工具,理解它们的工作原理能够帮助开发者在面对特定问题时...

    Java最经典的算法题,初学者必懂 好好学,好好练,这就是学习的最终的秘诀

    1. 排序算法:包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,它们用于组织和整理数据,是所有程序员都应熟悉的基石。 2. 搜索算法:如线性搜索、二分搜索、深度优先搜索(DFS)和广度优先搜索...

    2024最新好未来Java开发岗面试回顾

    此外,对于链表转换为红黑树的过程,也利用了红黑树的自平衡性质来优化查找和插入性能。这样的设计不仅保证了线程安全性,还有效提升了并发处理能力。 #### 2. JVM的垃圾回收机制 **内存结构**:JVM内存主要分为堆...

    JAVA近百种算法大全打包.zip

    1. **排序算法**:包括快速排序、归并排序、冒泡排序、插入排序、选择排序、堆排序等。这些排序算法各有特点,例如快速排序平均时间复杂度为O(nlogn),归并排序适合大数据量,而冒泡排序则适用于小规模数据。 2. **...

    Java Collections Framework

    - **总结要点**:回顾 Java 集合框架的核心概念与实现细节,强调掌握这些知识点的重要性。 - **未来发展**:展望 Java 集合框架未来的发展趋势,包括性能改进、新特性引入等方面。 ### 结语 通过本教程的学习,...

    javase知识的回顾

    在这个知识回顾中,我们将深入探讨Java类集框架(Collections Framework),这是Java中处理对象集合的重要工具。 类集的出现是为了克服传统数组的局限性,尤其是数组长度固定的限制。类集提供了一种动态管理对象...

    Java语言与面向对象程序设计第05讲(语言基础类库和数组)

    关于算法,介绍了排序(冒泡排序、选择排序和插入排序)和查找的基本概念,这些都是算法基础,对于优化代码性能至关重要。 最后,简要回顾了递归,这是一种函数自我调用的技术,广泛应用于解决复杂问题,如树遍历、...

Global site tag (gtag.js) - Google Analytics