C 各種排序方法

2021-07-10 21:49:48 字數 1361 閱讀 3997

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...