c/c++**實現直接插入排序
#includeusing namespace std;
int main()
; int k=sizeof(a)/sizeof(a[0]);
int j;
for(int i=1;i=0 && a[j]>temp;j--)
a[j+1]=temp;//此處就是a[j+1]=temp;}}
for(int f=0;f歸併排序
//將有二個有序數列a[first...mid]和a[mid...last]合併。
void mergearray(int a, int first, int mid, int last, int temp)
while (i <= m)
temp[k++] = a[i++];
while (j <= n)
temp[k++] = a[j++];
for (i = 0; i < k; i++)
a[first + i] = temp[i];
} void mergesort(int a, int first, int last, int temp)
} bool mergesort(int a, int n)
快速排序
void sort(int *a, int left, int right)
int i = left;
int j = right;
int key = a[left];
while(i < j) /*控制在當組內尋找一遍*/
a[i] = a[j];
/*找到乙個這樣的數後就把它賦給前面的被拿走的i的值(如果第一次迴圈且key是
a[left],那麼就是給key)*/
while(i < j && key >= a[i])
/*這是i在當組內向前尋找,同上,不過注意與key的大小關係停止迴圈和上面相反,
因為排序思想是把數往兩邊扔,所以左右兩邊的數大小與key的關係相反*/
a[j] = a[i];
}a[i] = key;/*當在當組內找完一遍以後就把中間數key回歸*/
sort(a, left, i - 1);/*最後用同樣的方式對分出來的左邊的小組進行同上的做法*/
sort(a, i + 1, right);/*用同樣的方式對分出來的右邊的小組進行同上的做法*/
/*當然最後可能會出現很多分左右,直到每一組的i = j 為止*/
}
以上請參考。
各種排序方法
前一陣子為了準備暑期實習筆試 面試,把維基上查到的常用的排序演算法全寫了一遍。基本是按照演算法導論和維基上面的思路寫的,有些演算法的細節可能和一些書上有出入,但是思想是一樣的。cpp檔案在最後,如下 include include include include includeusing names...
java各種排序方法
package org.rut.util.algorithm.support import org.rut.util.algorithm.sortutil author treeroot since 2006 2 2 version 1.0 public class insertsort imple...
java各種排序方法
package org.rut.util.algorithm.support import org.rut.util.algorithm.sortutil author treeroot since 2006 2 2 version 1.0 public class insertsort imple...