java快速排序兩種方法
public class FaskSort { private static int count0 = 0; public static void sort(int[] array){ if(array.length > 0){ sort(array, 0, array.length - 1); } } private static void sort(int[] array, int low, int high){ count0++; int p_pos = low;// 分界索引 int p_voint = array[low];// 基值 int temp; for (int i = low + 1; i <= high; i++){ if(array[i] < p_voint){ p_pos++; if(p_pos != i){// 索引相同避免交換 temp = array[p_pos]; array[p_pos] = array[i]; array[i] = temp; } } } // 把基準值放到排好序的最後位置 if(p_pos != low){ temp = array[p_pos]; array[p_pos] = array[low]; array[low] = temp; } if(p_pos - 1 > low){ sort(array, low, p_pos - 1); } if(high > p_pos + 1){ sort(array, p_pos + 1, high); } } private static int count1 = 0; public static void sort1(int[] array){ if(array.length > 0){ sort1(array, 0, array.length - 1); } } private static void sort1(int[] array, int low, int high){ count1++; int i = low +1; int j = high; int key = array[low]; int temp; while (i < j){ while(i < j && array[i] < key){// i < j時從左往右找大於key的 索引 i++; } while(i < j && array[j] > key ){// i < j時從右往左找小於key的 索引 j--; } if(i < j){// 然後交換 temp = array[j]; array[j] = array[i]; array[i] = temp; } } if (array[i] >= key) {// 由於上面while退出條件的缺陷 進行修正,此時i索引處左邊全是小於key i--; } temp = array[i]; array[i] = array[low]; array[low] = temp; if(i -1 > low){ sort1(array, low, i -1); } if(high > i + 1){ sort1(array, i + 1, high); } } public static void main(String[] args) { { int[] array = {6, 4, 7, 5, 9, 3, 2, 1, 8}; sort(array); System.out.println(Arrays.toString(array)); System.out.println(count0); } { int[] array1 = {6, 4, 7, 5, 9, 3, 2, 1, 8}; sort1(array1); System.out.println(Arrays.toString(array1)); System.out.println(count1); } } }
相關推薦
java快速排序兩種方法
public class FaskSort { private static int count0 = 0; public static void sort(int[] array){ if(array.length > 0){
Java中ArrayList的排序兩種方法以及遍歷的程式碼
方法一: 在類的定義中實現Comparable介面中的compareTo()方法,然後呼叫Collections.sort()進行排序: import java.util.Scanner
快速排序兩種方式實現及優化總結
今天看了快速排序,現在對自己的已知的方法進行總結,歡迎拍磚。 快速排序被認為是20世紀十大演算法之一,在排序中,快速排序其實就是我們前面認為最慢的氣泡排序的升級,它們都屬於交換排序類。即快排也是通過不斷比較和移動交換來實現排序的,不過它的實現,增大了記
Java 判斷閏年 兩種方法
方法一: public class Bissextile { boolean bissextile(int year){ //建立boolean型別的方法 if(year % 4 == 0 && year % 100 != 0 || year % 4
(好使)用Java集合中的Collections.sort方法對list排序的兩種方法
ret = String.valueOf(m2.invoke(((E)b), null).toString().length()).compareTo(String.valueOf(m1.invoke(((E)a), null).toString().length())); if
Java程式設計之TreeSet排序兩種解決方法(1)元素自身具備比較功能,元素需要實現Comparable介面覆蓋compare(2)建立根據自定義Person類的name進行排序的Comparator
當很多人問我讀研到底好不好的時候,我總是說上研很苦逼,讀完研之後都不知道自己能不能找到工作,所以不建議同學們讀研~即使要讀也讀一個985或者211的研究生,這是我肺腑之言。但還有一半我沒說完,讀研的時候你可能會找到你喜歡的活動,會遇到一些願意和你一起玩的玩伴,
java ArrayList的兩種排序方法
1.ArrayList使用排序的初衷 我們知道ArrayList的好處是可以不用限定容器的大小,他會根據元素的增加自己擴大。但是儲存進去的資料型別都會變成object,雖然每個元素有自己的index,但不像陣列的下標可以更加方便的操作。那我們平時學習的選擇排序啊快速排序
程式設計之法第二章【快速排序的兩種方法】
花了兩個多小時重新複習了快速排序,之前以為懂,但是真正實踐的時候才發現自己錯了。 快速排序有兩種實現方式。都是兩個指標,不過之前學的一種是一個從頭開始掃,一個從尾開始掃。另外一種是兩個都是從頭開始掃,不過一個比另外一個前一個位置。 如果真正的理解快排的原理,對於一些排序的問
快速生成較大文本文檔的兩種方法
修改 cmd命令 style ext 百度 bsp 都是 進行 tex 在學習用FTP發送文件的過程中,需要用到一個比較大的文件進行傳輸測試。因此百度了一下如何生成指定大小文件的方法,發現在WINDOWS下有兩種方法比較實用,記錄如下: 第一種方法: 在運行窗口中輸入
在Java Web程序中使用監聽器可以通過以下兩種方法
output pla extend 標識 ade 介紹 gets str override 之前學習了很多涉及servlet的內容,本小結我們說一下監聽器,說起監聽器,編過桌面程序和手機App的都不陌生,常見的套路都是拖一個控件,然後給它綁定一個監聽器,即可以對該對象的事件
java打印等腰三角形的兩種方法!(根據行數,根據底邊長度)
triangle class [] 執行 next() result scanner 1-1 next 首先來看根據用戶輸入的底邊的長度判斷: 1 package cn.edu.nwpu.java; 2 3 import java.util.Scanner; 4
java快排(兩種方法)
span ast [] ati pub 方法 color 整體 blog 快排是最基礎的排序算法之一,今天來回顧一下。 public class QuickSort { public static void quickSort(int[] ar
java String轉Long兩種方法區別
基本數據 ring oat 兩種 基本 ava ger parse 兩種方法 第一種:包裝類型:Byte,Integer,Short,Long,Boolean,Character,Float,Double等8種 Long.valueOf("String")返回Long包裝
java——快速排序基準位置的選取方法和快速排序優化
一、 快速排序基準位置的選取方法 1.固定位置法(就是選取的基準是固定的、一般是陣列的第一個元素) 2.隨機選取基準法 import java.util.Arrays; import java.util.Random; /** * @ClassName TestDemo3
Java實現生產者消費者模式的兩種方法
1、 利用 Object的 wait/notify,和非阻塞佇列實現 import java.util.PriorityQueue; public class Test{ private int size=10; private PriorityQueue&
java中字串 按照字元挨個換行輸出-兩種方法
方案1:將String 字串 轉化為char 陣列 toCharArray public static void main(String[] args) { String s="aaahssjshs222"; // 轉化為字元陣列。 char[] c=s
java中產生隨機數的兩種方法
1.可以使用Java api中java.lang包中的Math類,其中Math.random()方法是一個可以產生[0.0,1.0]區間內的一個雙精度浮點數的方法 如: 產生一個100以內的整數:int x=(int)(Math.random()*100); 2.Random random =
java程式將漢字轉成拼音的兩種方法-----------------第二種方式
同樣需要下載pom檔案,匯入相應的jar包!!!!!! import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPi
java實現快速排序一種常規的,一種是左程雲的方式。
java實現快速排序: 一:先來一個常規快排: 這個方式就是我們的基準值一直在兩個邊界徘徊,要麼在less的較大邊界,要麼是在more的小邊界,其實就是在居中位置徘徊。 package chapter1; //來一個快排,常規快排 public class QuickSort {
List集合序列排序的兩種方法
首先講一下Comparable介面和Comparator介面,以及他們之間的差異。有助於Collections.sort()方法的使用。請參考 1.Comparable自然規則排序//在自定義類Student裡面實現Comparable介面,並重寫抽象方法compareTo(Student o);//Col