数据结构:插入排序(Insertion sort)
生活随笔
收集整理的這篇文章主要介紹了
数据结构:插入排序(Insertion sort)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
package com.sortbasic;import java.util.Random;public class InsertionSort {// 數(shù)組private static int[] arr = null;// 隨機(jī)生成數(shù)組// 生成有n個(gè)元素的隨機(jī)數(shù)組,每個(gè)元素的隨機(jī)范圍為[rangeL, rangeR]public static int[] generateRandomArray(int n, int rangeL, int rangeR){int[] arr = new int[n];for(int i=0;i<n;i++){arr[i] = new Random().nextInt(rangeR-rangeL)+rangeL;}return arr;}// 近乎有序的數(shù)組序列public static int[] generateRandomArrayNearOrder(int n, int swapTimes){int[] arr = new int[n];for(int i=0;i<n;i++){arr[i] = i;}for( int i = 0 ; i < swapTimes ; i ++ ){int posx = new Random().nextInt(n);int posy = new Random().nextInt(n);int temp = arr[posx];arr[posx] = arr[posy];arr[posy] = temp;}return arr;}// 插入排序 將數(shù)據(jù)插入到已經(jīng)排好序的數(shù)據(jù)中static void insertionSort(int arr[], int n){for(int i=1;i<n;i++){//寫法1 // for(int j=i; j>0; j--){ // if(arr[j] < arr[j-1]){ // int temp = arr[j]; // arr[j] = arr[j-1]; // arr[j-1] = temp; // }else{ // break; // } // }// 寫法2 // for(int j=i; j>0 && arr[j] < arr[j-1]; j--){ // int temp = arr[j]; // arr[j] = arr[j-1]; // arr[j-1] = temp; // }// 寫法3int e = arr[i];int j;for(j=i; j>0 && arr[j-1]>e; j--){arr[j] = arr[j-1];}arr[j] = e;}}// 打印數(shù)組static void printArray(int arr[], int n) {for(int i=0; i<n; i++){System.out.println(arr[i]+" ");}}public static void main(String[] args){int size = 10000;//arr = generateRandomArray(size, 0, 100000);arr = generateRandomArrayNearOrder(size, 100);long startTime = System.currentTimeMillis();insertionSort(arr,size);long endTime = System.currentTimeMillis();System.out.println(endTime-startTime);//printArray(arr, size);} }?
總結(jié)
以上是生活随笔為你收集整理的数据结构:插入排序(Insertion sort)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构:选择排序(Selection
- 下一篇: 数据结构:O(nlogn)算法