1.歸併排序
void merge(int *result, int begin, int mid, int end, int *temp)
while (i <= mid)
temp[k++] = result[i++];
while (j <= end)
temp[k++] = result[j++];
for (int t = begin; t <= end; t++)
result[t] = temp[t];
}void mergesort(int *result, int begin, int end, int *temp)
}
2.快速排序
int partition(int *result, int begin, int end)
result[low] = temp;
return low;
}void quicksort(int *result, int begin, int end)
}
3.插入排序
void insertsort(int *a, int length)
a[j + 1] = temp;
}}
4.氣泡排序
void bubblesort(int *a, int length)
} }}
5.希爾排序
void shellsort(int *a, int length)
a[k + i] = temp;
} }}
6.堆排序
void heapadjust(int *a, int k, int n)
if (rhca[index])
if (index == k)
else }}
void heapsort(int *a, int n)
for (int i = n - 1; i >= 1; i--)
}
7.測試程式
int main(void)
; clock_t start, end;
int *a = new int[size];
int *b = new int[size];
int *c = new int[size];
int *temp = new int[size];
for (int i = 0; i < size; i++)
//cout << endl;
start = clock();
//mergesort(c, 0, size - 1,temp);
//priority_queueque(c, c + size);
heapsort(c, size);
//bubblesort(c, size);
//sort(c, c + size);
//stable_sort(c, c + size);
//qsort(a, size, sizeof(int), cmp);
end = clock();
cout << "heapsort:" << end - start << " ms" << endl;
start = clock();
//mergesort(a, 0, size - 1, temp);
//insertsort(a, size);
//bubblesort(a, size);
shellsort(a, size);
end = clock();
cout << "shellsort:" << end - start << " ms" << endl;
start = clock();
quicksort(b, 0, size - 1);
end = clock();
cout << "quicksort:" << end - start << " ms" << endl;
return 0;
}
總體來說,快速排序高效很多,注意,不要使用swap函式,特別是堆排序,可能是函式呼叫太多導致效率太低。
C 排序大彙總
using system namespace bubblesorter j public class mainclass bubblesorter sh new bubblesorter sh.sort iarrary for int m 0 m iarrary.length m console.w...
九大內部排序彙總
插入排序 名稱 穩定性時間複雜度 空間複雜度 直接插入排序 穩定o n2 o 1 折半插入排序 穩定o n2 o 1 希爾排序 不穩定o n2 特定n n1.3 o 1 交換排序 名稱 穩定性時間複雜度 空間複雜度 氣泡排序 穩定o n2 o 1 快速排序 不穩定o n2 o n 平均o nlog2...
排序方法彙總
氣泡排序是非常容易理解和實現,以從小到大排序舉例 設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面二步,否則排序完成。按...