前一段时间看到了一片文章《为什么我们要像驯化小狗狗一样驯化算法》,就一直在想我是否需要重头开始做一遍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 + "、"); } } }
看完感觉怎么样,你是否想起了她?
相关推荐
根据提供的文件信息,我们可以整理出以下关于Java的重要知识点回顾: ### 1. Java 基本数据类型 Java 提供了多种基本数据类型,包括数值型、字符型和布尔型等。 - `byte`: 占用 1 字节,取值范围为 -128 至 127。...
算法则是解决问题的具体步骤,包括排序(如冒泡排序、选择排序、插入排序、快速排序、归并排序等)、搜索(如深度优先搜索、广度优先搜索)、递归、动态规划、贪心策略等。理解并熟练运用这些算法可以显著提升程序的...
首先,"JAVA经典算法40题.doc"可能包含了一些基础的算法题目,如排序(冒泡排序、选择排序、插入排序、快速排序、归并排序)、搜索(线性搜索、二分搜索)、图论(最短路径问题、拓扑排序)以及动态规划等。...
排序算法是算法中最基础也是最重要的部分之一,包括冒泡排序、选择排序、插入排序、快速排序等。 - **冒泡排序**:通过重复比较相邻两个元素并交换顺序,使得较大的元素逐步向后移动,最终完成排序。 - **快速排序*...
对于小规模数据,时间复杂度为O(n log n)的排序算法,如插入排序或冒泡排序,可能是可行的选择。然而,面对大规模数据,O(n log n)时间复杂度的算法如归并排序、快速排序和堆排序更为高效。其中,快速排序和堆排序...
常见的编程题目可能包括排序算法(冒泡、选择、插入、快速等)、搜索算法(线性、二分查找)、数据结构(栈、队列、链表、树等)的应用,以及文件操作和网络编程等。 复习Java时,应重视以下几个关键点: - **基础...
8. 排序算法:如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,它们对数组或其他数据结构进行排序。 文件名"newreview"可能代表作者对这些主题进行了回顾和总结,可能包含了各种实例、练习和解决...
冒泡排序是最简单的排序算法之一,通过不断交换相邻的错误顺序元素来实现排序。在Java中,可以使用嵌套循环来实现冒泡排序。虽然冒泡排序效率相对较低,但对于小规模数据或教学用途,它是很好的选择。冒泡排序的时间...
9. **排序算法**:学习各种排序算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,了解它们的优缺点和适用场景。 10. **图算法**:研究图的遍历(如深度优先搜索和广度优先搜索)以及最短路径...
1. **排序算法**:如快速排序(Quick Sort)、归并排序(Merge Sort)、冒泡排序(Bubble Sort)和插入排序(Insertion Sort)。排序算法在数据处理中极为重要,用于将一组数据按照特定顺序排列。 2. **搜索算法**...
本篇文章主要探讨如何在Java中编写程序来删除一个已排序链表中的所有重复元素。链表是一种常见的线性数据结构,其特点是每个元素由数据域和指向下一个元素的指针构成。在处理链表时,经常需要进行诸如插入、删除等...
这样的结构使得二叉排序树在查找、插入和删除操作上具有较高的效率。 2. **二叉链表储存方式**:在实际编程中,二叉树通常通过链表结构来表示,每个节点包含数据域和两个指针域,分别指向左孩子和右孩子。这种存储...
1. **排序算法**:如快速排序、归并排序、冒泡排序、插入排序、选择排序、堆排序等。这些排序算法展示了不同的时间复杂度和空间复杂度,适用于不同规模的数据处理。 2. **查找算法**:如二分查找、线性查找、哈希...
接着,“算法的概述”章节将涵盖排序、查找和其他常见算法,如冒泡排序、选择排序、插入排序、快速排序、归并排序、二分查找等。这些算法是解决问题的基础工具,理解它们的工作原理能够帮助开发者在面对特定问题时...
1. 排序算法:包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,它们用于组织和整理数据,是所有程序员都应熟悉的基石。 2. 搜索算法:如线性搜索、二分搜索、深度优先搜索(DFS)和广度优先搜索...
此外,对于链表转换为红黑树的过程,也利用了红黑树的自平衡性质来优化查找和插入性能。这样的设计不仅保证了线程安全性,还有效提升了并发处理能力。 #### 2. JVM的垃圾回收机制 **内存结构**:JVM内存主要分为堆...
1. **排序算法**:包括快速排序、归并排序、冒泡排序、插入排序、选择排序、堆排序等。这些排序算法各有特点,例如快速排序平均时间复杂度为O(nlogn),归并排序适合大数据量,而冒泡排序则适用于小规模数据。 2. **...
在这个知识回顾中,我们将深入探讨Java类集框架(Collections Framework),这是Java中处理对象集合的重要工具。 类集的出现是为了克服传统数组的局限性,尤其是数组长度固定的限制。类集提供了一种动态管理对象...