锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鏃墮棿澶嶆潅搴︽棤闈炲氨鏄痺hile寰幆鐨勬鏁幫紒
鎬誨叡鏈塶涓厓绱狅紝
娓愭笎璺熶笅鍘誨氨鏄痭,n/2,n/4,....n/2^k錛屽叾涓璳灝辨槸寰幆鐨勬鏁?/span>
鐢變簬浣爊/2^k鍙栨暣鍚?gt;=1
鍗充護n/2^k=1
鍙緱k=log2n,錛堟槸浠?涓哄簳錛宯鐨勫鏁幫級
鎵浠ユ椂闂村鏉傚害鍙互琛ㄧずO()=O(logn)
蹇熸帓搴?nbsp;瀵瑰啋娉℃帓搴忕殑涓縐嶆敼榪涳紝鑻ュ垵濮嬭褰曞簭鍒楁寜鍏抽敭瀛楁湁搴忔垨鍩烘湰鏈夊簭錛岃湑鍖栦負鍐掓場鎺掑簭銆備嬌鐢ㄧ殑鏄掑綊鍘熺悊錛屽湪鎵鏈夊悓鏁伴噺綰(n longn) 鐨勬帓搴忔柟娉曚腑錛屽叾騫沖潎鎬ц兘鏈濂姐傚氨騫沖潎鏃墮棿鑰岃█錛屾槸鐩墠琚涓烘渶濂界殑涓縐?u>鍐呴儴鎺掑簭鏂規硶
鍩烘湰鎬濇兂鏄細閫氳繃涓韜烘帓搴忓皢瑕佹帓搴忕殑鏁版嵁鍒嗗壊鎴愮嫭绔嬬殑涓ら儴鍒嗭紝鍏朵腑涓閮ㄥ垎鐨勬墍鏈夋暟鎹兘姣斿彟澶栦竴閮ㄥ垎鐨勬墍鏈夋暟鎹兘瑕佸皬錛岀劧鍚庡啀鎸夋鏂規硶瀵硅繖涓ら儴鍒嗘暟鎹垎鍒繘琛屽揩閫熸帓搴忥紝鏁翠釜鎺掑簭榪囩▼鍙互閫掑綊榪涜錛屼互姝よ揪鍒版暣涓暟鎹彉鎴愭湁搴忓簭鍒椼?br /> 涓変釜鎸囬拡: 絎竴涓寚閽堢О涓簆ivotkey鎸囬拡錛堟灑杞達級錛岀浜屼釜鎸囬拡鍜岀涓変釜鎸囬拡鍒嗗埆涓簂eft鎸囬拡鍜宺ight鎸囬拡錛屽垎鍒寚鍚戞渶宸﹁竟鐨勫煎拰鏈鍙寵竟鐨勫箋俵eft鎸囬拡鍜宺ight鎸囬拡浠庝袱杈瑰悓鏃跺悜涓棿閫艱繎錛屽湪閫艱繎鐨勮繃紼嬩腑涓嶅仠鐨勪笌鏋㈣醬姣旇緝錛屽皢姣旀灑杞村皬鐨勫厓绱犵Щ鍒頒綆绔紝灝嗘瘮鏋㈣醬澶х殑鍏冪礌縐誨埌楂樼錛屾灑杞撮夊畾鍚庢案榪滀笉鍙橈紝鏈緇堝湪涓棿錛屽墠灝忓悗澶с?br />
闇瑕佷袱涓嚱鏁幫細
① 閫掑綊鍑芥暟 public static void quickSort(int[]n ,int left,int right)
② 鍒嗗壊鍑芥暟錛堜竴瓚熷揩閫熸帓搴忓嚱鏁幫級 public static int partition(int[]n ,int left,int right)
JAVA婧愪唬鐮侊紙鎴愬姛榪愯錛?/span>錛?br />
package com.abin.lee.algorithm.bubble;
public class BubbleSort {
public static void main(String[] args) {
int[] start={5,2,1,3,6,4};
int[] end=sort(start);
for(int i=0;i<end.length;i++){
System.out.println("end["+i+"]="+end[i]);
}
}
public static int[] sort(int[] input){
int temp=0;
}
package com.abin.lee.algorithm.select;
public class SelectSort {
public static void main(String[] args) {
int[] start={5,2,3,1,6,4};
start=sort(start);
for(int i=0;i<start.length;i++){
System.out.println("start["+i+"]="+start[i]);
}
}
public static int[] sort(int[] input){
int temp=0;
for(int i=0;i<input.length;i++){
for(int j=i+1;j<input.length;j++){
if(input[i]>input[j]){
temp=input[i];
input[i]=input[j];
input[j]=temp;
}
StringBuffer stb=new StringBuffer();
for(int k=0;k<input.length;k++){
stb.append("input["+k+"]="+input[k]+" ");
}
System.out.println("i="+i+",j="+j+" = "+stb.toString());
}
}
return input;
}
}
package com.abin.lee.photo;
public class TestInputNumber {
public static void main(String[] args) {
int n=4;
output(n);
}
public static void output(int n){
int temp=1;
for(int i=1;i<=n;i++){
for(int j=0;j<i;j++){
System.out.print(temp+" ");
temp++;
}
System.out.println("");
}
}
}
4.浜屽弶鏍戠畻娉?br />
package com.abin.lee.algorithm.binary;
public class BinaryNode {
public int data;//鏍硅妭鐐?br /> BinaryNode left;//宸﹁妭鐐?br /> BinaryNode right;//鍙寵妭鐐?br />
public BinaryNode(int data,BinaryNode left,BinaryNode right) {
this.data=data;
this.left=left;
this.right=right;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public BinaryNode getLeft() {
return left;
}
public void setLeft(BinaryNode left) {
this.left = left;
}
public BinaryNode getRight() {
return right;
}
public void setRight(BinaryNode right) {
this.right = right;
}
}
package com.abin.lee.algorithm.binary;
public class BinaryTree {
//鍓嶅簭閬嶅巻
public static void preOrder(BinaryNode root){
if(null!=root){
System.out.print(root.data+"-");
preOrder(root.left);
preOrder(root.right);
}
}
//涓簭閬嶅巻
public static void inOrder(BinaryNode root){
if(null!=root){
inOrder(root.left);
System.out.print(root.data+"--");
inOrder(root.right);
}
}
//鍚庡簭閬嶅巻
public static void postOrder(BinaryNode root){
if(null!=root){
postOrder(root.left);
postOrder(root.right);
System.out.print(root.data+"---");
}
}
public static void main(String[] args) {
BinaryNode one=new BinaryNode(1,null,null);
BinaryNode three=new BinaryNode(3,null,null);
BinaryNode two=new BinaryNode(2,three,one);
BinaryNode four=new BinaryNode(4,one,two);
BinaryNode five=new BinaryNode(5,four,one);
System.out.println("preOrder");
preOrder(five);
System.out.println();
System.out.println("inOrder");
inOrder(five);
System.out.println();
System.out.println("postOrder");
postOrder(five);
System.out.println();
}
}
杈撳嚭緇撴灉錛?br />preOrder
5-4-1-2-3-1-1-
inOrder
1--4--3--2--1--5--1--
postOrder
1---3---1---2---4---1---5---
5銆乯ava鎻掑叆鎺掑簭
鎻掑叆寮忔帓搴忔硶——鎻掑叆鎺掑簭娉?/span>
鎻掑叆鎺掑簭錛圛nsertion Sortion錛夌殑鍩烘湰鎬濇兂鏄細鎶?/span>n涓緟鎺掑簭鐨勫厓绱犵湅鎴愪竴涓湁搴忚〃鍜屼竴涓棤搴忚〃錛屽紑濮嬫湁搴忚〃鍙寘鍚竴涓厓绱狅紝鏃犲簭琛ㄤ腑鍖呭惈n-1涓厓绱狅紝鎺掑簭榪囩▼涓瘡嬈′粠鏃犲簭琛ㄤ腑鍙栧嚭絎竴涓厓绱狅紝鎶婂畠鐨勬帓搴忕爜渚濇涓庢湁搴忚〃鍏冪礌鐨勬帓搴忕爜榪涜姣旇緝錛屽皢瀹冩彃鍏ュ埌鏈夊簭琛ㄤ腑鐨勯傚綋浣嶇疆錛屼嬌涔嬫垚涓烘柊鐨勬湁搴忚〃銆?/span>
public class InjectionSort //瀹氫箟涓涓?InjectionSort 綾?br />public static void injectionSort(int[] number) //浼犳暟緇?br />for(int j = 1;j<number.length;j++)//寰幆
int tmp = number[j]; //寰幆鎶婃暟緇勭浜屼釜鍊兼斁鍒皌mp閲?br />int i = j-1//緇檌 璧嬪?br />while(tmp<number[i]) //tmp鍊煎拰鏁扮粍絎竴涓兼瘮杈冭皝灝?br />number[i+1] = number[i]; //濡傛灉灝忎簬灝辨妸絎竴涓艱祴鍊肩粰絎簩涓?br />i--;
if(i == -1)//濡傛灉i鍊?-1
break; //閫鍑哄驚鐜?br />number[i+1] = tmp //鍥犱負姣旇緝鏁扮粍閲岀殑鍓嶄竴涓瘮鍚庝竴涓繖鏍峰氨鎹氦浜嗗疄鐜頒簡鎶婂皬鐨勬斁鍦ㄥ墠闈?br />榪欐槸絎竴嬈★紝鍥犱負寰幆鏄竴涓暟緇勶紝鍚庤竟鐨勫氨涓嬈″線涓嬪驚鐜紝鏈鍚庡氨鎶婃暟緇勯噷鐨勯『搴忎粠灝忓埌澶ф帓搴忎簡
public static void main(String[] args){
int[] num = {5,46,26,67,2,35};//瀹氫箟鏁扮粍num
injectionSort(num);//璋冪敤鏂規硶
for(int i = 0;i<num.length;i++){
System.out.println(num[i]);//鏄劇ず鎺掑簭鍚庣殑鏁扮粍錛屼竴琛屾樉紺轟竴涓?br />
綆鍗曡灝辨槸鏁扮粍閲岀浜屼釜鍜岀涓涓瘮璋佸皬錛屾妸灝忕殑鏀懼埌絎竴涓噷錛屽ぇ鐨勬斁鍒扮浜屼釜閲岋紝鐒跺悗絎簩涓啀鍜岀涓変釜姣旓紝灝忕殑榪樻槸鏀懼湪鍓嶏紝涓鐩存瘮鍒拌繖涓暟緇勭粨鏉燂紝榪欐牱灝卞疄鐜頒簡浠庡皬鍒板ぇ錛屽笇鏈涙垜璇寸殑澶熻緇?/pre>
鎻掑叆鎺掑簭浠g爜while寰幆錛?br />package com.abin.lee.algorithm.insert;public class InsertSort {public static void main(String[] args) {int[] input = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };input=sort(input);for (int i = 0; i < input.length; i++) {System.out.print(input[i] + " ");}}public static int[] sort(int[] input) {for (int i = 1; i < input.length; i++) {int insertVal = input[i];// insertValue鍑嗗鍜屽墠涓涓暟姣旇緝int index = i - 1;while (index >= 0 && insertVal < input[index]) {// 灝嗘妸input[index]鍚戝悗縐誨姩input[index + 1] = input[index];// 璁﹊ndex鍚戝墠縐誨姩涓浣?/div>index--;}// 灝唅nsertValue鎻掑叆鍒伴傚綋浣嶇疆input[index + 1] = insertVal;//涓嬮潰榪欎釜寰幆鏄負浜嗘墦鍗頒竴涓嬩腑闂寸殑寰幆鐪嬬湅鏄笉鏄彃鍏ユ帓搴忕殑姝g‘綆楁硶StringBuffer stb=new StringBuffer();for(int k=0;k<input.length;k++){stb.append(input[k]+" ");}System.out.println("i="+i+" = "+stb.toString());}return input;}}
鎻掑叆鎺掑簭for寰幆浠g爜錛?br />package com.abin.lee.algorithm.insert;public class DoInsertSort {public static void main(String[] args) {int[] input={5,4,6,3,7,2,8,1,0,9};input=sort(input);for(int i=0;i<input.length;i++){System.out.print("input["+i+"]="+input[i]+" ");}}public static int[] sort(int[] input){for(int i=1;i<input.length;i++){int temp=input[i];int j;for(j=i;j>0;j--){if(temp<input[j-1]){input[j]=input[j-1];}else{break;}}input[j]=temp;//涓嬮潰榪欎釜寰幆鏄負浜嗘墦鍗頒竴涓嬩腑闂寸殑寰幆鐪嬬湅鏄笉鏄彃鍏ユ帓搴忕殑姝g‘綆楁硶StringBuffer stb=new StringBuffer();for(int k=0;k<input.length;k++){stb.append(input[k]+" ");}System.out.println("i="+i+" = "+stb.toString());}return input;}}
浜屽垎鏌ユ壘鍙堢О鎶樺崐鏌ユ壘錛屽畠鏄竴縐嶆晥鐜囪緝楂樼殑鏌ユ壘鏂規硶銆?/p>
鎶樺崐鏌ユ壘鐨勭畻娉曟濇兂鏄皢鏁板垪鎸夋湁搴忓寲(閫掑鎴栭掑噺)鎺掑垪錛屾煡鎵捐繃紼嬩腑閲囩敤璺寵穬寮忔柟寮忔煡鎵撅紝鍗沖厛浠ユ湁搴忔暟鍒楃殑涓偣浣嶇疆涓烘瘮杈冨璞★紝濡傛灉瑕佹壘鐨勫厓绱犲煎皬浜庤涓偣鍏冪礌錛屽垯灝嗗緟鏌ュ簭鍒楃緝灝忎負宸﹀崐閮ㄥ垎錛屽惁鍒欎負鍙沖崐閮ㄥ垎銆傞氳繃涓嬈℃瘮杈冿紝灝嗘煡鎵懼尯闂寸緝灝忎竴鍗娿?鎶樺崐鏌ユ壘鏄竴縐嶉珮鏁堢殑鏌ユ壘鏂規硶銆傚畠鍙互鏄庢樉鍑忓皯姣旇緝嬈℃暟錛屾彁楂樻煡鎵炬晥鐜囥備絾鏄紝鎶樺崐鏌ユ壘鐨勫厛鍐蟲潯浠舵槸鏌ユ壘琛ㄤ腑鐨勬暟鎹厓绱犲繀欏繪湁搴忋?/span>
package com.abin.algorithm.template.half;public class BinarySearch {public static void main(String[] args) {int[] src=new int[]{1,3,5,7,9,11};int result=binarySearch(src, 3);System.out.println("result="+result);int status=binarySearch(src, 9 ,0 ,src.length);System.out.println("status="+status);}//寰幆瀹炵幇public static int binarySearch(int[] src,int key){int low=0;int high=src.length-1;while(low<=high){int middle=(low+high)/2;if(key==src[middle]){return middle;}else if(key<src[middle]){high=middle-1;}else{low=middle+1;}}return -1;}//閫掑綊瀹炵幇public static int binarySearch(int[] src,int key,int low,int high){int middle=(low+high)/2;if(src[middle]==key){return middle;}else if(low>=high){return -1;}else if(src[middle]>key){return binarySearch(src, key, low, middle-1);}else if(src[middle]<key){return binarySearch(src, key, middle+1, high);}return -1;}}
]]> 主站蜘蛛池模板: 亚洲精品**中文毛片| 亚洲av无码不卡| 色噜噜亚洲男人的天堂| 国产精品视频免费| 久久亚洲日韩看片无码| 久久这里只精品99re免费| 久久夜色精品国产嚕嚕亚洲av| aaa毛片免费观看| 亚洲国产美女精品久久久久∴ | 激情综合亚洲色婷婷五月APP| 18女人水真多免费高清毛片| 亚洲成人黄色网址| 我要看WWW免费看插插视频| 亚洲国产精品无码第一区二区三区 | 久久久久亚洲av无码专区导航| 色欲国产麻豆一精品一AV一免费| 亚洲国产精品久久久久久| 免费在线观看视频网站| 精品亚洲456在线播放| 青青青国产免费一夜七次郎| 猫咪www免费人成网站| 亚洲另类激情综合偷自拍图| 97在线视频免费| 精品国产成人亚洲午夜福利| 免费v片在线观看品善网| 色偷偷亚洲第一综合网| 在线观着免费观看国产黄| 男女猛烈xx00免费视频试看| 亚洲色精品88色婷婷七月丁香 | 日本特黄特色aa大片免费| 免费精品国自产拍在线播放 | 久久精品国产亚洲av高清漫画| 久久笫一福利免费导航| 亚洲国产精品va在线播放 | 亚洲国产成AV人天堂无码| 国产精品视频永久免费播放| 真正全免费视频a毛片| 在线观看午夜亚洲一区| 男女免费观看在线爽爽爽视频 | 久久久久亚洲AV无码永不| 亚洲视频免费在线看|