几种排序算法
来源:互联网 发布:淘宝广告图片怎么做的 编辑:程序博客网 时间:2024/04/18 11:23
void insert_sort(int v[], int len)
{
for (int i = 1; i < len; ++i) {
int t = v[i];
for (int j = i; j > 0 && v[j-1] > t; --j)
v[j] = v[j-1];
v[j] = t;
}
}
void insert_sort2(int v[], int len)
{
for (int i = 1; i < len; ++i) {
int t = v[i], low = 0, high = i - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (t < v[mid])
high = mid - 1;
else
low = mid + 1;
}
// move
for (int k = i; k > low; --k)
v[k] = v[k-1];
v[low] = t;
}
}
void shell_sort(int v[], int len)
{
for (int g = len/2; g != 0; g /= 2) {
for (int i = g; i < len; ++i) {
int t = v[i];
for (int j = i; j >= g && t < v[j-g]; j -= g)
v[j] = v[j-g];
v[j] = t;
}
}
}
void sort(int array[], int len)
{
--len;
for (int i = 0; i < len; ++i) {
for (int j = 0; j < len; ++j) {
if (array[j] > array[j+1]) {
int tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
}
// --------------------------------------------------------
int qsort_partition(int v[],int low,int high)
{
int pv = v[low];
while (low < high) {
while (low < high && v[high] >= pv) --high;
int t = v[low]; v[low] = v[high]; v[high] = t;
while(low < high && v[low] <= pv) ++low;
t = v[low]; v[low] = v[high]; v[high] = t;
}
return low;
}
void qsort(int v[], int low, int high)
{
if (low < high) {
int pi = qsort_partition(v, low, high);
qsort(v, low, pi-1);
qsort(v, pi+1, high);
}
}
- 几种排序算法
- 几种排序算法!
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 几种排序算法
- 另一个简单的binary_search算法:
- kfs嵌入式文件系统应用指南(一)
- Com 调用方式
- CLR 是怎样去处理Boxing and Unboxing Value Types?
- 咸水元子
- 几种排序算法
- 搜索引擎简史随笔记载(admin5.com)
- Oracle 9i Text对PDF的版本支持有问题
- JBPM 中的decision 使用
- 最新流行动画,风靡全球的《倒霉熊》,在线播放。搞笑。
- sqlplus 远程连接oracle语法
- 学好VC++的十大良好习惯
- Linux Kernel Development (中文译名Linux 内核设计与实现) 勘误 (第一版和第二版)
- IT“圣经”