學習排序演算法

2021-07-15 08:08:32 字數 1842 閱讀 8102

把目前學習的排序演算法記下來,方便以後複習
package sort;
//冒泡

public class ******sort ;

sort(a);

for(int i=0;ia[j+1])}}

}}

package sort;
//插入

public class insertsort ;

insertsort(a,a.length);

print(a);

}private static void print(int a)

}}

package sort;
//希爾
public class shellsort ;

shellsort(a,a.length);

print(a,a.length);

}private static void print(int a, int n) }}

}

package sort;
//快排

public class quicksort ;

quicksort(a,0,a.length-1);

for (int k : a)

}public static void quicksort(int a,int l,int h)

//若不滿足時候,即將a[h]值賦給a[l]

a[l]=a[h];

//若l和h重合且a[l]元素等於第乙個元素時,繼續向後遍歷

while(l= right)

return;

int leftend = (left + right) / 2;

sort(a, left, leftend);

sort(a, leftend + 1, right);

merge(a, left, leftend, right);

}private static void merge(int a, int left, int leftend, int right) else

}// 將剩餘的元素拷貝到臨時陣列中,實際上只會執行兩個while的其中乙個

while (rightfirst <= right)

while (left <= leftend)

// 最後將臨時陣列的元素拷貝到原陣列中left到right中

while (tem <= right)

}}

package sort;
//堆排

public class heapsort ;

heapsort(arry);

print(arry);

}private static void print(int arry)

}//如果當前節點的根節點小於最大子節點,則將最大值賦當前根節點

if(arry[k]}}}

//交換

private static void swap(int arry,int i,int j)

arry[i]=arry[i]+arry[j];

arry[j]=arry[i]-arry[j];

arry[i]=arry[i]-arry[j];

} }

學習 排序演算法

模板題 洛谷p1177 模板 快速排序 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數...

演算法學習 排序演算法

排序演算法 平均時間複雜度 最好情況 最壞情況 空間複雜度 穩定性氣泡排序 o n 2 o n o n 2 o 1 穩定選擇排序 o n 2 o n 2 o n 2 o 1 不穩定插入排序 o n 2 o n o n 2 o 1 穩定希爾排序 o nlogn o nlogn o nlogn o 1 ...

學習排序演算法簡介

學習排序演算法簡介 學習排序 learning to rank,ltr 是一類基於機器學習方法的排序演算法。傳統經典的模型,例如基於tfidf特徵的vsm模型,很難融入多種特徵,也就是除了tfidf特徵之外,就無法融入其他種類的特徵了。而機器學習的方法很容易融合多種特徵,而且有成熟深厚的理論基礎,引...