各種排序演算法大集合

2021-08-15 01:29:07 字數 3840 閱讀 2753

電腦程式就是資料結構加演算法。可見演算法在計算機世界的重要性,本文所述的演算法是指基礎通用的查詢和排序演算法,其是其他更複雜演算法的基礎,總結在此以備將來查閱。

排序演算法又分為好多種

簡單排序(****** sorts)

1.1 插入排序(insertion sort)

1.2 選擇排序(selection sort)

有效排序(efficient sorts )

2.1 merge sort (歸併排序)

2.2 heapsort (堆排序)

2.3 quicksort (快速排序)

氣泡排序及其變種(bubble sort and variants )

3.1 bubble sort (氣泡排序)

3.2 shell sort (希爾排序)

3.3 comb sort (梳排序)

分布排序(distribution sort )

4.1 counting sort(計數排序)

4.2 bucket sort(桶排序)

4.3 radix sort(基數排序)

public

static

intinsertionsort(int numarray)

else

break;

} }

return

0;

}

public static void selectionsort(int numarray)  

} int temp = numarray[i];

numarray[i] = numarray[min];

numarray[min] = temp;

} }

//將有序陣列a和b合併到c中    

private

void

mergearray(int a, int n, int b, int m, int c)

while (i < n)

c[k++] = a[i++];

while (j < m)

c[k++] = b[j++];

} //將有二個有序數列numbers[first...mid]和numbers[mid...last]合併。

private

static

void

mainmerge(int numbers, int first, int mid, int last, int temp)

while (i <= m)

temp[k++] = numbers[i++];

while (j <= n)

temp[k++] = numbers[j++];

for (i = 0; i < k; i++)

} public

static

void

sortmerge(int numbers, int left, int right, int temp)

}

//  新加入i結點  其父結點為(i - 1) / 2    

private

void

minheapfixup(int a, int i)

a[i] = temp;

}

//在最小堆中加入新的資料nnum

private

void

minheapaddnumber(int a, int n, int nnum)

//刪除節點

//從i節點開始調整,n為節點總數 從0開始計算 i節點的子節點為 2*i+1, 2*i+2

private

static

void

minheapfixdown(int a, int i, int n)

a[i] = temp;

}

//在最小堆中刪除數

void minheapdeletenumber(int a, int n)

//建立最小堆

public

static

void

makeminheap(int a, int n)

public

static

void

minheapsorttodescendarray(int a, int n)

} private

static

void

swap(int a, int b)

c#**示例

public

static

void

quicksort(icomparable elements, int left, int right)

while (elements[j].compareto(pivot) > 0)

if (i <= j)

} // recursive calls

if (left < j)

if (i < right)

}

c#**示例

public

static

void

bubblesort(int numarray)

} }

}

public

static

void

shellsort(int numarray)

numarray[k + gap] = temp;

} }

} }

} public

static

void

shellsortadvaced(int numarray)

numarray[k + gap] = temp;

}

}

c#**示例

public

static

int combsort(int numarray)

int i = 0;

swaps = false;

while (i + gap < numarray.length)

i++;

} }

return numarray;

}

c#**示例

public static int countingsort(int numarray)  

if(i < min)

}

//這裡k的大小是要排序的陣列中,元素大小的極值差+1

int k = max - min + 1;

int c = new int[k];

for(int i = 0; i < numarray.length; ++i)

for (int i = 1; i < c.length; ++i)

for (int i = numarray.length - 1; i >= 0; --i)

return b;

}

有時間再完善相關演算法的解釋。

各種檔案字尾名大集合

由於很多時候看到或用到某種檔案,下意識的去看它的字尾名,遇到沒見過過的就會產生n個疑問。例如 它到底 能用到?到底怎麼用?相似檔案還有誰?有什麼優點?在軟體開發領域佔據什麼地位?糾結至於,感覺自己應該總結一下。特別常見的就不寫了 如下是我日積月累的小成果 sdf sql server ce檔案,是一...

各種語言的Hello,World程式大集合(二)

李二 我很擔心,例二 是否會被遮蔽,你就當是通假 筆誤或者非主流吧,但是我不是90後,我只是卑鄙 你知道,又是通假 的 一樣開啟記事本,輸入 hello,world 這是我設計的第乙個頁面 儲存為1.html,如果你沒看到網頁的標誌,說明你的副檔名被隱藏了!資料夾中 工具 資料夾選項 顯示 取消隱藏...

jQuery Select操作大集合

jquery獲取select選擇的text和value 語法解釋 select id change function 為select新增事件,當選擇其中一項時觸發 var checktext select id find option selected text 獲取select選擇的text va...