java排序中的插入排序的優化-----二分排序
二分排序的思想:
1)、給定下界:low,給定上界:high,中:mid
2)、將插入的數和mid位置的陣列元素進行比較,如果比mid位置的大則low=mid+1,否則high=mid-1
3)、之後需要從插入數插入位置開始的陣列元素全部往後摞一位。騰出hight+1存放插入數。
public void insertSort2(int a[]){ for(int i=0;i<a.length-1;i++){ int temp=a[i+1]; int low=0; int high=i; int mid; while(low<=high){ mid=(low+high)/2; if(a[mid]<temp){ low=mid+1; }else{ high=mid-1; } } for(int j=i;j>high;j--){ a[j+1]=a[j];//j+1等價於給定範圍j=i+1; } a[high+1]=temp; } print(a); }
相關推薦
java排序中的插入排序的優化-----二分排序
二分排序的思想:1)、給定下界:low,給定上界:high,中:mid2)、將插入的數和mid位置的陣列元素進行比較,如果比mid位置的大則low=mid+1,否則high=mid-13)、之後需要從插入數插入位置開始的陣列元素全部往後摞一位。騰出hight+1存放插入數。p
leetcode:搜尋插入位置(java二分排序)
擊敗100%呦 package LeetCode; /* 給定一個排序陣列和一個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。 你可以假設陣列中無重複元素。 示例 1: 輸入: [1,3,5,6], 5 輸出: 2 本人思路:
選擇排序,插入排序,插入排序二分優化模板
#include <bits/stdc++.h> using namespace std; int a[11] = {10,9,8,6,3,7,2,1,1,4,5}; void selectSort(int a[],int n){ //選擇排序 int min,index;
七大排序演算法(冒泡,選擇,插入,二分法排序,希爾,快速,合併,堆排序)的java實現(14/8/3更新加入二分排序)
氣泡排序 思路:就是每次將最大或最小的元素放到陣列的最後,so easy!時間複雜度為(O(n^2)) public class BubbleSort { public static void bubbleSort(int[] a) { for (int j = 1;
Java選擇排序,插入排序,快速排序
col log println 左移 i++ void -1 left oid public class Test { public static void main(String[] args) { int a[] = { 1, 2, 3,
Java數據結構和算法總結-冒泡排序、選擇排序、插入排序算法分析
odi .com 依次 一個數 演示 clas 邏輯 true odin 前言:排序在算法中的地位自然不必多說,在許多工作中都用到了排序,就像學生成績統計名次、商城商品銷量排名、新聞的搜索熱度排名等等。也正因為排序的應用範圍如此之廣,引起了許多人深入研究它的興趣,直至今
各種排序方法(冒泡,快速,插入,選擇),二分查找
highlight 查找 rip math 插入排序 end tar scrip || <script> var list = [25,15,60,24,30,70,10,9,8]; //冒泡排序 function bubble(lis
Java中Comparator進行對象排序
pri 排序 pub use clas .com get 變化 class Java在8後引入了lambda表達式和流,使得排序方法有了變化 class User { int id; String name; public User(int id,
java實現排序算法:快排、冒泡排序、選擇排序、插入排序、歸並排序
結果 快速 post ont pla emp string () tro 一、概述:本文主要介紹常見的幾種排序算法的原理以及java實現,包括:冒泡排序、選擇排序、插入排序、快速排序、歸並排序等。 二、冒泡排序: (1)原理: 1、從第一個數據開始,與第二個數據相比較,
Java排序算法分析與實現:快排、冒泡排序、選擇排序、插入排序、歸並排序(二)
第一個元素 spa insert 循環 冒泡排序 author 高級算法 ins -s 一、概述: 上篇博客介紹了常見簡單算法:冒泡排序、選擇排序和插入排序。本文介紹高級排序算法:快速排序和歸並排序。在開始介紹算法之前,首先介紹高級算法所需要的基礎知識:劃分、遞歸,並順
【Python學習筆記】-冒泡排序、插入排序、二分法查找
判斷 tail fontsize watermark encoding middle 循環 itl 要求 原文出處:https://blog.csdn.net/yort2016/article/details/68065728 冒泡排序 主要是拿一個數與列表中所有的數進行比
二分排序java實現
java 特點 bsp IT span pan while 插入排序java 數組 1.什麽是二分排序: 二分排序是指利用二分法的思想對插入排序進行改進的一種插入排序算法,不同於二叉排序,可以利用數組的特點快速定位指定索引的元素; 算法思想:二分法插入排序是在插入第i個元素
列表2中插入排序
list clas sort case emp div 模式匹配 pty head //插入排序 def isort(xs:List[Int]):List[Int]= if(xs.isEmpty)Nil else insert(xs.head,isort(
Java數組排序和插入
exce num private name 如何使用 sta turn exc length 如何排序數組並插入元素? 以下示例顯示如何使用sort()方法和用戶定義的insertElement()方法來完成此任務。 package com.yiibai; import
java之氣泡排序、選擇排序、快速排序、插入排序、java8排序
package cn.com.javatest.sort; import org.apache.commons.lang3.StringUtils; /** * 常用排序方法 * * @author: Rodge * @time: 2018年10月4日 下午5:16:22 * @ve
Java中按照中文首字母排序
public class ABD { public static void main(String[] args) { //Collator類是用來執行區分語言環境的String比較的,這裡是選擇CHINA Comparator comparator = Co
Java排行榜中多級排序的一種正確實現方式
需求:1,外層根據參與人數排序,並據此分頁 2,內層首先根據級別排序,級別相同時,按照票數排序,固定展示8條 實現基礎:ArrayList 可能的坑:僅僅對最外層list執行一次排序呼叫,此時,無法確
Java 知識點整理-7.StringBuffer類+氣泡排序+選擇排序+二分法+Arrays類+基本資料型別的包裝類
1、StringBuffer類概述:執行緒安全的可變字元序列,一個類似於String的字串緩衝區,但不能修改(不能像String那樣用加號與其他型別資料連線),但通過某些方法呼叫可以改變該序列的長度和內容。java.lang包下,使用時不用導包。final修飾,不能有子類。 2、StringBu
java實現 》從 》 直接插入排序 》到》 希爾排序
直接插入排序和希爾排序,把這兩個放一起是便於記憶,這兩個排序是差不多的,希爾排序也只是對插入排序進行一點修改: 首先是看一下我們的插入排序: package sort; public class InsertSort { public static void main(String[]
關於比較器,我們知道我們java陣列中可以使用一個方法:Array.sort(array);來進行排序
關於比較器,我們知道我們java陣列中可以使用一個方法:Array.sort(array);來進行排序,如果我們陣列中是放的基本資料型別,就可以直接比較大小排序,如果我們放的是物件的話,這樣排序就意義不大,需要我們自己進行相應的修改,得到我們想要的比較結果。 比如我們有三個學生,學生屬性有id,