输入:n个double类型数{a1,a2,......an}
输出:输入序列的一个排列{A1,A2,......An},使得A1<=A2<=......An.
测试代码:
java 代码
- private InsertionSort insertSort = new InsertionSort();
-
- public void testOneElementSort() {
- double[] array = { 3 };
- array = insertSort.sort(array);
- assertEquals(3.0, array[0]);
- }
-
- public void testTwoElementSort() {
- double[] array = { 3, 2 };
- array = insertSort.sort(array);
- assertEquals(2.0, array[0]);
- assertEquals(3.0, array[1]);
- }
-
- public void testNElementSort() {
- int n = 200000;
- double[] array = new double[n];
- for(int i = 0; i<n;i++){
- array[i] = Math.random();
- }
- array = insertSort.sort(array);
- for (int i = 1; i < array.length; i++) {
- assertTrue(array[i] > array[i - 1]);
- }
- }
实现:
java 代码
- public double[] sort(double[] array) {
- for (int i = 1; i < array.length; i++) {
- double key = array[i];
- int j = i - 1;
- while (j >= 0 && array[j] > key) {
- array[j + 1] = array[j];
- j = j - 1;
- }
- array[j + 1] = key;
- }
- return array;
- }
该算法所需的时间大致正比于n×n。
分享到:
相关推荐
javascript js_leetcode题解之147-insertion-sort-list.js
python python_leetcode题解之147_Insertion_Sort_List
标题 "14.1-Insertion-Sort-kymcbigmouth" 暗示着这是一个关于插入排序(Insertion Sort)的学习资源,可能是某个教学项目或代码实现。在这个上下文中,我们将深入探讨插入排序的基本原理、算法实现以及它在Java编程...
以下是对这个"insertion-sort-js"项目的详细解析。 **插入排序算法的原理:** 1. **初始化**:从数组的第一个元素开始,认为它已经排序。 2. **比较**:遍历数组的其余部分,每次取出一个未排序的元素,称为“关键...
在这个"insertion-sort.rar"压缩包中,包含了一个关于C/C++实现插入排序的资源,具体为一个名为"insertion sort.txt"的文本文件。这个文件很可能是包含了插入排序的不同实现版本或者详细解释。 插入排序在计算机...
总结来说,"Direct-insertion-sort.rar_数据结构_Visual_C++_"这个项目提供了在Visual C++环境中实现直接插入排序的一个实例。通过学习和实践这个例子,你可以掌握数据结构中的排序算法,并加深对C++编程的理解。...
这段代码首先定义了一个`insertionSort`函数,它接受一个整数数组和其大小作为参数。然后通过两个嵌套的循环实现插入排序:外层循环遍历数组中的每个元素,内层循环则负责比较并移动元素以找到插入位置。`printArray...
一个在sorts/insertionSort.js ,另一个在sorts/selectionSort.js 。对于集合中的每个项目在数组的未排序部分中找到最小的项,并将其与当前项交换对于集合中的每个项目检查上一个项目是否大于当前项目如果更大,则...
1. **初始化**:首先,我们定义一个函数,如`insertion_sort`,接受一个整数数组和数组长度作为参数。 2. **外层循环**:使用一个`for`循环遍历数组中的每一个元素,从第二个元素(下标为1)开始,因为第一个元素...
### 算法导论讲义 #### 一、课程介绍 本课程为麻省理工学院(MIT)开设的《算法导论》课程,编号为6.046J/18.401J/SMA5503。本课程由Charles E. Leiserson教授授课,旨在为学生提供算法设计与分析的基础知识。...
实现MERGE-SORT()算法,该算法从名为“ inputHW02.txt”的文件中读取... MERGE-SORT()的四个版本是: MERGE-SORT-A():使用递归调用并将NO INSERTION-SORT()用作子过程b。 MERGE-SORT-B():使用迭代循环(即N
在"Insertion-gnome-sort-visualandprocessing-main"这个文件中,我们可以预期包含主程序入口,它可能调用了用于执行排序算法的函数,并连接了Java的可视化部分。这个主程序可能是用C++编写,因为它是负责整个程序...
1. **初始化**:首先定义一个函数,例如`void insertionSort(int arr[], int n)`,其中`arr`是待排序的数组,`n`是数组长度。 2. **外层循环**:用一个for循环遍历数组,从第二个元素(下标为1)开始,到倒数第一个...
insertion sort 数据结构基础
为了实现非递增排序,可以在INSERTION-SORT算法的第5行将比较操作符A[i] > key更改为A[i] 。这一修改将使得算法按照从大到小的顺序排列数组元素。 ### LINEAR-SEARCH算法及其循环不变量 LINEAR-SEARCH算法用于在一...
**总结**:本文档提供了《算法导论》第二版部分习题的答案和解析,涉及了插入排序与归并排序的比较、不同时间复杂度的增长趋势、INSERTION-SORT算法的修改、线性搜索算法及其循环不变量、多项式时间复杂度的分析等多...
在2.1-2节中,文档提供了INSERTION-SORT算法的修改建议,即将第5行的条件判断A[i]>key改为A[i],从而实现元素按非递增顺序排序。 ### 线性搜索算法及其循环不变量 在2.1-3节,文档介绍了一种线性搜索算法LINEAR-...