锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚在线播放中文视频,国产精品三p一区二区,黄色软件在线http://www.aygfsteel.com/zhengzhili/archive/2008/06/13/207531.htmlBrianBrianThu, 12 Jun 2008 16:54:00 GMThttp://www.aygfsteel.com/zhengzhili/archive/2008/06/13/207531.htmlhttp://www.aygfsteel.com/zhengzhili/comments/207531.htmlhttp://www.aygfsteel.com/zhengzhili/archive/2008/06/13/207531.html#Feedback3http://www.aygfsteel.com/zhengzhili/comments/commentRss/207531.htmlhttp://www.aygfsteel.com/zhengzhili/services/trackbacks/207531.html         鈶犳妸 n 涓褰曠湅鎴?n 涓暱搴︿負 l 鐨勬湁搴忓瓙琛紱
        鈶¤繘琛屼袱涓ゅ綊騫朵嬌璁板綍鍏抽敭瀛楁湁搴忥紝寰楀埌 n/2 涓暱搴︿負 2 鐨勬湁搴忓瓙琛紱 
        鈶㈤噸澶嶇鈶℃鐩村埌鎵鏈夎褰曞綊騫舵垚涓涓暱搴︿負 n 鐨勬湁搴忚〃涓烘銆?br /> 浜?褰掑茍鎺掑簭綆楁硶瀹炰緥
        瀵逛簬褰掑茍鎺掑簭綆楁硶榪欑被鐨勫垎娌葷畻娉曪紝鍏舵牳蹇冨氨鏄?鍒嗚В"鍜?閫掑綊姹傝В"銆傚浜?鍒嗚В"瀹炰緥錛屼細鍦ㄤ笅闈㈠垎鏋恗sort()鏂規硶涓粰鍑恒傛垜浠厛鐪嬪悎騫剁殑榪囩▼銆?br />         浠ヤ笅闈㈡弿榪扮殑搴忓垪涓轟緥錛屽湪绱㈠紩鑼冨洿鍐匸first , last)鐨勫簭鍒楄繕鏈変節涓暣鏁板厓绱狅紝瀹冪敱绱㈠紩鑼冨洿涓篬first , mid]鐨勫洓涓厓绱犳湁搴忓瓙鍒楄〃A鍜岀儲寮曡寖鍥碵mid , last]鐨勪簲涓厓绱犳湁搴忓瓙鍒楄〃B緇勬垚銆?br />

        姝ラ1錛氭瘮杈僡rr[indexA]=7涓巃rr[indexB]=12銆傚皢杈冨皬鐨勫厓绱?澶嶅埗鍒版暟緇則empArr鐨勭儲寮昳ndexC澶勩傚茍灝唅ndexA鍜宨ndexC閮芥寚鍚戜笅涓涓綅緗?br />

        姝ラ2錛氭瘮杈僡rr[indexA]=10涓巃rr[indexB]=12銆傚皢杈冨皬鐨勫厓绱?0澶嶅埗鍒版暟緇則empArr鐨勭儲寮昳ndexC澶勩傚茍灝唅ndexA鍜宨ndexC閮芥寚鍚戜笅涓涓綅緗?br />
        姝ラ3錛氭瘮杈僡rr[indexA]=19涓巃rr[indexB]=12銆傚皢杈冨皬鐨勫厓绱?2澶嶅埗鍒版暟緇則empArr鐨勭儲寮昳ndexC澶勩傚茍灝唅ndexB鍜宨ndexC閮芥寚鍚戜笅涓涓綅緗?br />

        姝ラ4-7錛氫緷嬈℃垚瀵規瘮杈冧袱瀛愯〃鐨勫厓绱犲皢17錛?9錛?1錛?5澶嶅埗鍒版暟緇則empArr銆傛鏃訛紝indexA鍒拌揪瀛愯〃A鐨勬湭灝?indexA = mid)錛宨ndexB寮曠敤鐨勫間負30銆?br />
        姝ラ8-9錛氬皢鏈埌灝鵑儴鐨勫瓙琛ㄥ墿浣欐暟鎹鍒跺埌tempArr涓?br />
        姝ラ10錛氬皢tempArr澶嶅埗鍒板師濮嬫暟鎹產rr涓?br />
涓?褰掑茍鎺掑簭綆楁硶鐨勫疄鐜?br />     浜嗚В浜嗗悎騫惰繃紼嬶紝閭d箞鐞嗚В涓嬮潰鐨勪唬鐮佸茍涓嶆槸涓浠墮毦浜嬨備笅闈㈡彁渚涗簡褰掑茍綆楁硶鐨勯潪娉涘瀷鐗堟湰鍜屾硾鍨嬬増鏈?br />
public class MergeSort {
    
    
public static void sort(Object[] arr) {
        
//create a temporary array to store partitioned elements
        Object[] tempArr = arr.clone();

        
//call msort with arrays arr and tempArr along
        
//with the index range
        msort(arr, tempArr, 0, arr.length);
    }


    
public static <extends Comparable<? super T>> void sort(T[] arr) {
        
//create a temporary aray to store partitioned elements
        T[] tempArr = (T[]) arr.clone();

        
//call msort with arrays arr and tempArr along
        
//with the index range
        msort(arr, tempArr, 0, arr.length);
    }


    
private static void msort(Object[] arr, Object[] tempArr, int first,
                              
int last) {
        
//if the sublist has more than 1 element continue
        if (first + 1 < last) {
            
//for sublists of size 2 or more, call msort()
            
//for the left and right sublists and than
            
//merge the sorted sublists using merge()
            int midpt = (last + first) / 2;

            msort(arr, tempArr, first, midpt);
            msort(arr, tempArr, midpt, last);

            
//if list is already sorted, just copy src to
            
//dest; this is an optimization that results in faster
            
//sorts for nearly ordered lists
            if (((Comparable) arr[midpt - 1]).compareTo(arr[midpt]) <= 0)
                
return;
            
//the elements in the ranges [first,mid] and
            
//[mid,last] are ordered;merge the ordered sublists
            
//into an ordered sequence in the range [first , last]
            
//using the temporary array
            int indexA, indexB, indexC;

            
//set indexA to scan sublist A with rang [first , mid]
            
//and indexB to scan sublist B with rang [mid , last]
            indexA = first;
            indexB 
= midpt;
            indexC 
= first;

            
//while both sublists are not exhausted, compare
            
//arr[indexA] and arr[indexB]; copy the smaller
            
//to tempArr
            while (indexA < midpt && indexB < last) {
                
if (((Comparable) arr[indexA]).compareTo(arr[indexB]) < 0{
                    tempArr[indexC] 
= arr[indexA]; //copyto tempArr
                    indexA++//increment indexA
                }
 else {
                    tempArr[indexC] 
= arr[indexB]; //copyto tempArr
                    indexB++//increment indexB
                }

                indexC
++//increment indexC
            }

            
//copy the tail of the sublist that is not exhausted
            while (indexA < midpt) {
                tempArr[indexC
++= arr[indexA++]; //copy to tempArr
            }
 while (indexB < last) {
                tempArr[indexC
++= arr[indexB++]; //copy to tempArr
            }

            
//copy elements form temporary array to original array
            for (int i = first; i < last; i++)
                arr[i] 
= tempArr[i];
        }

    }

}
        
        涓婅堪浠g爜涓渶鏍稿績鐨刴sort()鏂規硶鏄竴閫掑綊綆楁硶銆備笅鍥捐鏄庝簡msort()鏂規硶涓瓙鍒楄〃鐨勫垎鍓蹭笌鍚堝茍銆?nbsp;   

鍥?褰掑茍鎺掑簭綆楁硶鐨勬晥鐜?br />         褰掑茍鎺掑簭鐨勬渶鍧忔儏鍐典笌騫沖潎鎯呭喌榪愯鏃墮棿閮戒負O(nlog2n)銆傚亣瀹氭暟緇勫叿鏈塶=2k涓厓绱犮傚涓嬪浘錛?br />          
        鍦ㄥ眰鏁?涓婂msort()鏂規硶鐨勭涓涓皟鐢ㄤ細浜х敓涓や釜閫掑綊璋冪敤錛岃繖涓や釜閫掑綊璋冪敤浜х敓闀垮害涓簄/2鐨勪袱涓崐閮ㄥ垎鍒楄〃錛岃宮erge()鏂規硶灝嗕笂榪頒袱涓崐閮ㄥ垎鍒楄〃緇勫悎鐨勪竴涓湁搴忕殑n鍏冪礌鍒楄〃錛涘湪灞傛暟1涓婂瓨鍦ㄤ袱涓猰sort()鏂規硶鐨勮皟鐢紝姣忎釜璋冪敤鍙堜細浜х敓鍙﹀涓や釜瀵歸暱搴︿負n/4鐨勫垪琛ㄧ殑閫掑綊璋冪敤銆傛瘡涓悎騫朵細灝嗕袱涓暱搴︿負n/4鐨勫瓙鍒楄〃榪炴帴涓轟竴涓暱搴︿負n/2鐨勬湁搴忓垪琛紱鍦ㄥ眰鏁?涓婂瓨鍦ㄥmerge()鏂規硶鐨?=22涓皟鐢紝姣忎釜璋冪敤浼氬垱寤轟竴涓暱搴︿負n/4鐨勬湁搴忓垪琛ㄣ傞氬父錛屽湪灞傛暟i涓婂瓨鍦ㄥmerge()鏂規硶鐨?i涓皟鐢紝姣忎釜璋冪敤浼氬垱寤轟竴涓暱搴︿負n/2i鐨勬湁搴忓瓙鍒楄〃銆?br />         灞傛暟0錛氬瓨鍦ㄥmerge()鏂規硶鐨?=20嬈¤皟鐢ㄣ傝繖涓皟鐢ㄥn涓厓绱犳帓搴忋?br />         灞傛暟1錛氬瓨鍦ㄥmerge()鏂規硶鐨?=21嬈¤皟鐢ㄣ傝繖涓皟鐢ㄥn/2涓厓绱犳帓搴忋?br />         灞傛暟2錛氬瓨鍦ㄥmerge()鏂規硶鐨?=22嬈¤皟鐢ㄣ傝繖涓皟鐢ㄥn/4涓厓绱犳帓搴忋?br />         ......
        灞傛暟i錛氬瓨鍦ㄥmerge()鏂規硶鐨?i嬈¤皟鐢ㄣ傝繖涓皟鐢ㄥn/i涓厓绱犳帓搴忋?br />         鍦ㄦ爲涓殑姣忎竴灞傦紝鍚堝茍娑夊強鍏鋒湁綰挎ц繍琛屾椂闂寸殑n/2i涓厓绱狅紝榪欎釜綰挎ц繍琛屾椂闂撮渶瑕佸皯浜巒/2i嬈$殑姣旇緝銆傚湪灞傛暟i涓婄粍鍚堢殑2i涓悎騫舵搷浣滈渶瑕佸皯浜?i*n/2i=n嬈$殑姣旇緝銆傚亣瀹歯=2k,鍒嗗壊榪囩▼浼氬湪n/2k=1鐨刱灞傛暟涓婄粓姝€傞偅涔堟墍鏈夊眰涓婂畬鎴愮殑宸ヤ綔鎬婚噺涓?k*n = nlog2n銆傚洜姝sort()鏂規硶鐨勬渶鍧忔儏鍐墊晥鐜囦負O(nlog2n)銆?

Brian 2008-06-13 00:54 鍙戣〃璇勮
]]>
鎻掑叆鎺掑簭鎬濊礬涓庢硾鍨嬬増鏈殑瀹炵幇http://www.aygfsteel.com/zhengzhili/archive/2008/06/11/207253.htmlBrianBrianWed, 11 Jun 2008 15:56:00 GMThttp://www.aygfsteel.com/zhengzhili/archive/2008/06/11/207253.htmlhttp://www.aygfsteel.com/zhengzhili/comments/207253.htmlhttp://www.aygfsteel.com/zhengzhili/archive/2008/06/11/207253.html#Feedback4http://www.aygfsteel.com/zhengzhili/comments/commentRss/207253.htmlhttp://www.aygfsteel.com/zhengzhili/services/trackbacks/207253.html涓.鎻掑叆鎺掑簭綆楁硶鐨勬濊礬
        鍋囧畾榪欎釜鏁扮粍鐨勫簭鏄帓濂界殑錛岀劧鍚庝粠澶村線鍚庯紝濡傛灉鏈夋暟姣斿綋鍓嶅灞傚厓绱犵殑鍊煎ぇ錛屽垯灝嗚繖涓暟鐨勪綅緗線鍚庢尓錛岀洿鍒板綋鍓嶅灞傚厓绱犵殑鍊煎ぇ浜庢垨鑰呯瓑浜庡畠鍓嶉潰鐨勪綅緗負姝€?br /> 浜?鎻掑叆鎺掑簭綆楁硶瀹炰緥
        鐢ㄤ簲涓悕瀛?Monroe,Chin,Flores,Stein鍜孌are)鐨勫垪琛ㄧ殑鎻掑叆鎺掑簭綆楁硶涓轟緥錛?br />                                        Monroe    浠嶮onroe寮濮?br />
        澶勭悊鍚嶅瓧Chin        Chine  Monroe    灝咰hin鎻掑叆鍒頒綅緗?錛汳onroe縐誨姩鑷充綅緗?

        澶勭悊鍚嶅瓧Flores     Chine  Flores  Monroe    灝咶lores鎻掑叆鍒頒綅緗?錛汳onroe縐誨姩鑷充綅緗?

        澶勭悊鍚嶅瓧Stein       Chine  Flores  Monroe  Stein    Stein浣嶇疆姝g‘ 

        澶勭悊鍚嶅瓧Dare       Chine  Dare  Flores  Monroe  Stein    灝咲are鎻掑叆鍦ㄤ綅緗?錛涘垪琛ㄥ熬閮ㄥ悜鍙崇Щ鍔?nbsp;

涓?鎻掑叆鎺掑簭綆楁硶鐨勫疄鐜?br />
public class InsertSort {
    
//sort an array of elements using insertion sort

    public static <extends Comparable<? super T>> void sort(T[] arr) {
        
int i, j, n =
 arr.length;
        T target;

        
/**
         * place element at index i into the sublist
         * from index 0 to i-1 where 1<= i,
         * so it is in the correct positon
         
*/

        
for (i = 1; i < n; i++{
            
//
index j scans down list from index i looking for
            
//
correct position to locate target; assigns it to
            
//arr at index j

            j = i;
            target 
=
 arr[i];
            
//
locate insertion point by scanning downward as long
            
//
as target < arr[j] and we have not encountered the
            
//beginning of the array

            while (j > 0 && target.compareTo(arr[j - 1]) < 0{
                
//shift elements up list to make room for insertion

                arr[j] = arr[j - 1];
                j
--
;
            }

            
//the location is found;insert target
            arr[j] = target;
        }

    }

}

鍥?鎻掑叆鎺掑簭綆楁硶鐨勬晥鐜?br />         鍋囧畾n鏄暟緇勭殑闀垮害錛岄偅涔堟彃鍏ユ帓搴忛渶瑕乶-1閬嶃傚浜庨氱敤鐨勯亶i鏉ヨ錛屾彃鍏ユ搷浣滀粠arr[0]鍒癮rr[i-1]鐨勫瓙鍒楄〃涓紝騫朵笖闇瑕佸鉤鍧噄/2嬈℃瘮杈冦傛瘮杈冪殑騫沖潎鎬繪暟涓猴細
                 T(n) = 1/2 + 2/2 + 3/2 + ...... + (n-2)/2 + (n-1)/2 = n(n-1)/4
        鏍規嵁T(n)鐨勪富欏癸紝鎻掑叆鎺掑簭綆楁硶鐨勫鉤鍧囪繍琛屾椂闂翠負O(n2)銆傛渶濂芥儏鍐典負O(n)錛屾渶鍧忔儏鍐典負O(n2)銆?

Brian 2008-06-11 23:56 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 加查县| 高邮市| 城步| 灵武市| 乌苏市| 靖西县| 休宁县| 科技| 潼关县| 裕民县| 宿松县| 滨州市| 墨脱县| 清新县| 潜江市| 漳州市| 梅河口市| 凤山市| 临夏县| 乐都县| 麻栗坡县| 城固县| 会东县| 遂川县| 宜丰县| 石嘴山市| 临清市| 黄梅县| 贡觉县| 繁昌县| 丰宁| 黄冈市| 大姚县| 涞源县| 诸暨市| 镇远县| 莎车县| 循化| 丽水市| 无棣县| 嘉祥县|