InsertionSort

 1 public class InsertionSort {
 2
 3     public static void main(String[] args) {
 4         //随机生成5个0到100之间的数
 5         int [] arr = new int[5];
 6         for(int i = 0; i < arr.length; i++) {
 7             arr[i]  = (int) (Math.random() * 100);
 8             System.out.println(arr[i]);
 9         }
10         //i控制轮数,从第二个数开始,第一个数先留着不动
11         for(int i = 1; i < arr.length; i++) {
12             //和前面的数一个个比较,插到正确的位置(升序)
13             for(int j = i; j > 0 && arr[j - 1] > arr[j]; j--) {
14                 int t = arr[j];
15                 arr[j] = arr[j - 1];
16                 arr[j - 1] = t;
17             }
18         }
19
20         System.out.println("---------------------------------------------------");
21         for(int k : arr) {
22             System.out.println(k);
23         }
24     }
25 }

原文地址:https://www.cnblogs.com/stoneandatao/p/10360786.html

时间: 2024-09-28 17:45:46

InsertionSort的相关文章

插入排序(insertion-sort)

作为排序算法的一种,插入排序是稳定排序.它的时间复杂度:O(n*n),空间复杂度为:O(1).最好的时间复杂度为:O(n),最坏和平均则为:O(n*n). 算法的思想:给定一组无序的数组,我们从它的第二个数开始,并将它赋值给mark变量,让mark和它前面的一个数作大小比较,若小于前面的那个数,则将前面那个数移动到它的位置.然后继续让它和它前面的数作大小比较,若小于则交换位置,若大于则将mark赋值给合适的位置,然后跳出循环,则又从下一个数开始重复如此步骤. 贴出相关代码: #include <

排序-InsertionSort 插入排序

插入排序 の implementation 插入排序就像打赌的时候,比如双扣.抽牌的时候,一次拿一张牌,这张牌和之前的牌一张张比较.选择把这张牌插入什么位置,排好顺序的位置后打牌更顺.要不然得一个一个找到时麻烦.也不利于打牌的大局观.看下图 假设第一次抽到梅花7, 不用排序.因为只有一张 接着抽到梅花10 .因为10比7大,所以不用排序. 再接着抽卡.发现抽到了梅花5 .这个时候不要犹豫,2点真的不算大的.果断弃牌 接着我们拿 5 和 10 比较. 5 小于 10 所以交换位置. 拿5再和7比.

BasicSort — InsertionSort

一.插入排序 核心:通过构建有序序列,对于未排序序列,在已排序序列中从后向前扫描(对于单向链表则只能从前往后遍历),找到相应位置并插入.实现上通常使用in-place排序(需用到O(1)的额外空间) 从第一个元素开始,该元素可认为已排序 取下一个元素,对已排序数组从后往前扫描 若从排序数组中取出的元素大于新元素,则移至下一位置 重复步骤3,直至找到已排序元素小于或等于新元素的位置 插入新元素至该位置 重复2~5 性质: 交换操作和数组中倒置的数量相同 比较次数>=倒置数量,<=倒置的数量加上数

插入排序 Insertion-sort

---恢复内容开始--- 插入排序 经典显示(参照算法导论) 一副扑克牌放在桌面上 花色朝下,每次从桌面上拿去最上面的一张 ,放入自己手中的牌中的正确位置,(每次都是对手中的牌排序,并且每次拿去桌面上的牌时,手中的牌已经排序好,当桌上的牌没有时,所有的排序都已经排序好.   其中注意点:将后面一张牌与前一张比如果小于就交换位置. 办法二 [最佳方法]将最后一张牌与 for循环下面的每个元素比A[i],若小于就向后移一位A[i+1] = A[i], 但是刚拿过的牌 j 必须要付给一个临时变量来保存

插入排序算法(insertion-sort)

一.用途: 输入:n个数(a1,a2,...,an) 输出:输入序列的一个排列(即重新排序)<a1',a2',...,an'>,使得a1' <= a2' <= ...an'. 待排序的数成为关键字key. Insertion-sort的参数是一个数组A[1,2,...,N],包含n个待排序的数.(在代码中,A中元素个数n用length[A]表示).输入的个数字是原地排序的(sorted in place),意即这些数字就是在数组A中进行重新排序的.在任何时刻,至多只有其中的常数个数

插入排序(InsertionSort)

位置p上的元素存储于tmp(第一趟p通常取1),而(位置p之前)所有更大的元素都向右移动一个位置. 然后tmp被放在正确的位置上. 代码: public class InsertionSort { private int q; int[] insertionSort(int[] a) { for (int p = 1; p < a.length; p++) { int temp = a[p]; for (q = p; q > 0 && (temp - a[q - 1]) <

InsertionSort 直接插入排序(java)

排序思想: 相当于一堆数字,一开始先取出2个数排序,2个数排好序之后,再从一堆数字里面取一个数排序,直到结束伪代码: INSERTION_SORT(A) for j = 2 to A.length key = A[j] //Insert A[j] into sorted sequence A[1...j-1]. i = j - 1 while i>0 and A[i]>key A[i+1] = A[j] i = i - 1 A[i + 1] = key 代码: import java.io.*

插入排序InsertionSort

/** * * @author Administrator * 功能:插入排序法 */ package com.test1; import java.util.Calendar; public class InsertionSort { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = new int[50000]; for (int i = 0; i < arr.len

插入排序(InsertionSort)

生活中的"插入排序" 扑克牌我们大部分人都玩过,当然也都知道该怎么把刚抓上来的牌放哪里,最后得到一手排好的牌.但其中所蕴含的算法原理 不知道你有没有想过.计算机科学家把人的这一直观想法翻译为计算机程序于是便有了我们所说的插入排序: 图示 代码(C++) /************************************* 函数:插入排序 说明:对区间[low, high)的数据排序 时间复杂度:O(n + inverse) ***************************