1. 程式人生 > >Java 演算法之插入排序

Java 演算法之插入排序

public class InsertSort {

    public static void main(String[] args) {
        int[] array = new int[]{1, 4, 2, 5, 7, 6};
        int in, out;
        // 從第二個元素開始比較
for (out = 1; out < array.length; out ++) {
            int temp = array[out];
            in = out;
            // 找到應該插入的位置
while (in > 0 
&& array[in - 1] >= temp){ array[in] = array[in - 1]; --in; } // 把待排序的元素存入指定位置 array[in] = temp; } for (int i = 0; i < array.length ; i++) { System.out.println(array[i]); } } }

相關推薦

Java 演算法插入排序

public class InsertSort { public static void main(String[] args) { int[] array = new int

排序演算法插入排序演算法java實現】

插入排序演算法通過對未排序的資料執行逐個插入至合適的位置而完成排序工作。思路簡單,應用較多。但是此演算法在資料無規律的情況下,需要移動大量的資料,效率不高。 步驟: (1)首先對陣列的前兩個資料進行從小到大排序。 (2)接著將第3個數據與排好序的兩個資料進行比較,將第3個數據插入合適的位

Java常見排序演算法插入排序詳解

一、簡介 插入排序,就是假定一個參考值,假設該參考值左邊的元素都有序,那麼從該元素開始從後往前挨個查詢,如果找到比參考值大的數,那麼就將這個大的數後移,如果未找到比參考值大的數,說明不用移動元素。迴圈比較,這樣經過比較後移之後就會空出下標為0的位置,用於存放這個參考值。

排序演算法插入排序(直接插入、希爾排序

前言 一個好的排序演算法對於程式的優化會有很大的提升,雖然在許多語言的類庫中就存在了N種排序方法,但是隻有在瞭解了每一種排序演算法後才能更好的在實際中運用這些演算法。這裡我主要說明插入排序中的直接插入以及希爾排序的實現。 直接插入 直接插入排序是最簡單的排序演算法之一。對於直

c#程式碼實現排序演算法插入排序

插入排序的平均時間複雜度為O(n²),最好時間複雜度為O(n),最壞時間複雜度為O(n²),空間複雜度為O(1),是一種穩定的演算法。 1.將整個待排序的記錄序列劃分成有序區和無序區,初始時有序區為待排序記錄序列的第一個記錄,無序區包括所有剩餘待排序的記錄。 2.將無序區的第一個

排序演算法插入排序(關鍵詞:資料結構/演算法/排序演算法/插入排序

假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 插入排序演算法 程式碼 def insert_sort(nums): i = 1 n = len(nums) while i <= n-1: j = i

九大排序演算法插入排序(原理及實現)

1、演算法思路:每趟將一個待排序的元素作為關鍵字,按照其關鍵字值得大小插入到已經排好的部分的適當位置上,知道插入完成。 2、演算法過程 舉個栗子(第一趟的排序過程) 原始序列:49、38、65、97、76、13、27、49 1)開始以第一個元素49為關鍵字,看成一個序列,其餘數看成另

php演算法插入排序

//插入排序演算法 //總結很簡單so easy //拿陣列的第二個元素到最後一個元素分別與此元素前面的元素作比較,如果元素值小於前面的元素,則兩個元素互換位置。 //也就是拿一個元素與從小到大排好順序的元素做比較,如果小於前面的元素就換位置,直到大於前面的元素為止。 //外層for控制將要插入的元素,

java演算法氣泡排序

氣泡排序法 口訣: 外層迴圈 0到n-1 //控制比較輪數 n 表示元素的個數 內層迴圈 0到n-i-1 //控制每一輪比較次數 兩兩比較做交換       氣泡排序的優點:每進行一趟排序,就會少比較一次,因為每進行一

十大經典排序演算法插入排序(Insertion Sort)

插入排序(Insertion-Sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,需要反覆

JAVA演算法高階排序

  本章介紹兩種高階排序,希爾排序和快速排序,這兩種排序比之前講到的簡單排序都要快很多;希爾排序大約需要O(N*(logN)2)的時間,快速排序的時間複雜度為(N*logN),這兩種演算法和我們在講遞迴的時候講到的歸併排序不同,不需要大量的輔助儲存空間,快速排序是所有通用排序演算法中最快的排序演算法。 希爾排

資料結構-排序演算法插入排序

直接插入排序 一、演算法基本思想 直接插入排序是插入排序的一種,記錄array[0,len-1]已經排好序。即array[0]<array[1]<array[2].......array[len-1],將記錄計入arrry,插入到上述序列中的適當的位置,使得序

排序演算法 插入排序、希爾(shell)排序 及其時間複雜度和空間複雜度

        有一個已經有序的資料序列,要求在這個已經排好的資料序列中插入一個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法——插入排序插入排序的基本操作就是將一個數據插入到已經排好序的有序資料中,從而得到一個新的、個數加一的有序資料,演算法適用於少

排序演算法插入排序以及二分插入排序

簡單插入排序 #include<stdio.h> #include<iostream> using namespace std; #define N 100 void InsertSort(int a[], int n) {

Java演算法——直接插入排序

直接插入排序 前言 直接插入是一種穩定的插入排序,效率較高,而且時間複雜度也低,因為只是在一個數組內部進行內排,但是隻適用於在有一些以前就排好的順序的陣列內部,如果在很長又很雜亂的陣列內部進行排序的話,會讓效率降低。 直接插入排序描述 首先定義一段長度為n的陣列,從最左邊開始

php排序演算法插入排序

目錄 一: 原理 二: 舉例說明 三: 插入排序步驟 四: PHP程式碼實現插入排序 一: 原理        插入排序(Insertion Sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於

排序演算法插入排序

插入排序直接插入排序(Straight Insertion Sort)的基本思想是:把n個待排序的元素看成為一個有序表和一個無序表。開始時有序表中只包含1個元素,無序表中包含有n-1個元素,排序過程中每

排序演算法插入排序及其C語言程式碼實現

概述 一個插入排序是另一種簡單排序,它的思路是:每次從未排好的序列中選出第一個元素插入到已排好的序列中。它的演算法步驟可以大致歸納如下: 1. 從未排好的序列中拿出首元素,並把它賦值給temp變數; 2. 從排好的序列中,依次與temp進行比較,如果元素比temp大,則將元素

Java演算法氣泡排序—BubbleSort

  程式碼如下: public static void main(String[] args) {  int[] arr = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };  for (int i = 0; i < arr.length - 1; i++) {// 外