插入排序与快排
来源:互联网 发布:net编程语言 编辑:程序博客网 时间:2024/05/17 04:03
#include< stdio.h>
#define ARR_SIZE(a) (sizeof((a)) / sizeof((a[0])))
int a[] = {1, 23, 32, 0, 2, 5, 23};
void insert_sort(int *a, int n) {
int i, j,temp;
for (i = 1;i < n; i++) {
temp = a[i];
for (j = i - 1; j >= 0 && temp <a[j]; j--) {
a[j + 1] = a[j];
}
a[j + 1] = temp;
}
}
void quick_sort(int *a, size_t left, size_t right){
size_t p =(left + right) / 2;
int pivot =a[p];
size_t i =left, j = right;
for(;i <j;){
while (i < p && a[i] <=pivot)++i;
if (i < p){
a[p] = a[i];
p = i;
}
while (j > p && a[j] >=pivot)--j;
if (j > p){
a[p] = a[j];
p = j;
}
a[p] = pivot;
if (p - left > 1)quick_sort(a, left, p -1);
if(right - p > 1)quick_sort(a, p + 1,right);
}
}
void display(int n){
for (int i =0; i < n; ++i)printf("%d\t", a[i]);
printf("\n");
}
int main(void){
quick_sort(a, 0, ARR_SIZE(a) - 1);
display(ARR_SIZE(a));
}
#define ARR_SIZE(a)
int a[] = {1, 23, 32, 0, 2, 5, 23};
void insert_sort(int *a, int n) {
}
void quick_sort(int *a, size_t left, size_t right){
}
void display(int n){
}
int main(void){
}
0 0
- 插入排序与快排
- 插入排序与快排
- 排序 实现-插入-选择-快排
- 排序算法--冒泡、插入、归并、快排
- 快排、堆排序、插入法比较
- 常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
- 排序算法 快排 堆排 选择 插入 希尔 归并
- 插入、希尔、快排、堆排、自然归并排序
- 排序(冒泡,选择,插入,快排,堆排)
- 冒泡排序,选择排序,插入排序,快排
- 算法分析与设计——快排和插入排序的实现
- 数据结构与算法复习之排序算法——冒泡、插入、快排、归并
- 常用排序算法简介与java实现(冒泡、插入、选择、希尔、归并、快排)
- 排序-归并、快排、插入、堆、希尔排序
- 排序(插入,希尔,选择,堆排序,归并,快排)
- 选择 冒泡 插入 快排 堆排序 排序
- 直接插入排序、快排 AND归并排序(图)
- 分治实现快排与归并排序
- AGG 文档翻译 - alpha mask adapter
- 删除容器中重复字符串并按长度排序…
- 捕获一个int变量, 判断是否…
- 找出最大的有由个三位数乘积构成的…
- 简单的读写文件
- 插入排序与快排
- 接受一个&istream参数,打印在标准输出上
- 使用流迭代器, sort, co…
- 约瑟夫环
- 数组同时求极值
- 用反向迭代器和普通迭代器逆序输出…
- list版本删除重复元素
- Helper2416:裸机第一步之点亮LED
- 读取文件, 统计字符,忽略大小写