日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排序第一天,回忆关键字

發(fā)布時(shí)間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序第一天,回忆关键字 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  選擇,插入,希爾,歸并,快排(包括三向快排),堆排序。

  選擇:

    實(shí)現(xiàn)原理:內(nèi)外循環(huán),選擇最小,比較。

    關(guān)鍵點(diǎn):for(k =i+1 ,k<N,k++){a[j]<a[min],min=j}

  插入:

     實(shí)現(xiàn)原理:往左插入最小

    關(guān)鍵點(diǎn):for(int j = i+1, k > 0 && less(a[j],a[j-1],j--)

  希爾:

    實(shí)現(xiàn)原理:插入的改進(jìn),使用遞增序列0,1,4,13………………,分組插入

    關(guān)鍵點(diǎn):

    while(h<N/3){

      h=3*h+1;

     for(int j = i, j >= h && less(a[j],a[j-h],j=j-h)

?

    ?  h=h/3;

    }

  歸并:

    實(shí)現(xiàn)原理:原地,自頂向下,自底向上,遞歸,使整體分成小數(shù)組

    關(guān)鍵點(diǎn):

      mergesort(a,lo,mid);

mergesort(a,mid+1,hi);

merge(a,lo,mid,hi);

for (int k = lo; k <= hi; k++)
if (i > mid)
a[k] = aux[j++];
else if (j > hi)
a[k] = aux[i++];
else if (SortUtils.less(aux[j], aux[i]))
a[k] = aux[j++];
else
a[k] = aux[i++];

}

?

快排:

 實(shí)現(xiàn)原理:選擇a[lo]第一次,從右往左搜比他大,從左往右搜比他小,就是a[++i]、a[--j]與a[lo]=v對比,小于 大于,三項(xiàng)添加等于

 關(guān)鍵點(diǎn):切分partition

while (SortUtils.less(a[++i], v))
if (i == hi)
break;
while (SortUtils.less(v, a[--j]))
if (j == lo)
break;
if (i >= j) {
break;
}

?

堆排序

   實(shí)現(xiàn)原理:優(yōu)先隊(duì)列,有序化,sink

   關(guān)鍵點(diǎn):for用來構(gòu)建堆有序,while使用來sink,從a[1]使用,后面exch和less減一

    

int N = a.length;
for (int i = N / 2; i >= 1; i--) {
sink(a, i, N);
}
while (N > 1) {
exch(a, 1, N--);
sink(a, 1, N);
}
}

?

private static void sink(Comparable[] a, int j, int n) {
while (2 * j <= n) {
int h = 2 * j;
if (h < n && less(a, h, h + 1)) {
h++;
}
if (!less(a, j, h)) {
break;
}
exch(a, j, h);
j = h;
}

}

    

轉(zhuǎn)載于:https://www.cnblogs.com/ykong/p/4321266.html

總結(jié)

以上是生活随笔為你收集整理的排序第一天,回忆关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。