電腦程式就是資料結構加演算法。可見演算法在計算機世界的重要性,本文所述的演算法是指基礎通用的查詢和排序演算法,其是其他更複雜演算法的基礎,總結在此以備將來查閱。排序演算法又分為好多種
簡單排序(****** 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...