快速排序(quick sort)
来源:互联网 发布:hash算法有哪些 编辑:程序博客网 时间:2024/05/22 01:54
http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F
#include <stdio.h>#include <stdlib.h>/* 数据交换 */void swap(int *a, int *b){ int tmp; tmp = *a; *a = *b; *b = tmp;} void quick_sort(int a[], int left, int right){ int i = left + 1, j = right; int key = a[left]; if (left >= right) return; /* 从i++和j--两个方向搜索不满足条件的值并交换 * * 条件为:i++方向小于key,j--方向大于key */ while (1) { while (a[j] > key) j--; while (a[i] < key&&i<j) i++; if(i >= j) break; swap(&a[i],&a[j]); if(a[i]==key)j--; else i++; } /* 关键数据放到‘中间’ */ swap(&a[left],&a[j]); if(left < i - 1) quick_sort(a, left, i - 1); if(j + 1 < right) quick_sort(a, j + 1 , right);}void main() { int i; int num_array[20]; srand(0); printf("\r\n init: "); for(i = 0; i < 20; i++) { num_array[i] = rand()%1000; printf("%d ", num_array[i]); } quick_sort(num_array, 0, 19); printf("\r\n quick sort: "); for(i = 0; i < 20; i++) { printf("%d ", num_array[i]); }}
C89标准在stdlib.h中定义了抽象数据类型的快速排序函数 qsort://尽量用这个接口。
#include <stdio.h>#include <stdlib.h>static int cmp(const void *a, const void *b){ return *(int *)a - *(int *)b;}void main() { int i; int num_array[20]; srand(0); printf("\r\n init: "); for(i = 0; i < 20; i++) { num_array[i] = rand()%1000; printf("%d ", num_array[i]); } qsort(num_array, 20, sizeof(int), cmp); printf("\r\n quick sort: "); for(i = 0; i < 20; i++) { printf("%d ", num_array[i]); }}
- 快速排序 Quick Sort
- 快速排序(Quick sort)
- quick sort 快速排序
- 快速排序(Quick Sort)
- 快速排序(Quick Sort)
- Quick Sort (快速排序)
- 快速排序(Quick-Sort)
- 快速排序Quick sort
- 快速排序 (Quick Sort)
- 快速排序(Quick Sort)
- Quick Sort 快速排序
- 快速排序(quick sort)
- 快速排序 quick sort
- 快速排序 quick sort
- 快速排序 quick sort
- Quick Sort快速排序
- 快速排序(quick-sort)
- quick sort 快速排序
- CODE 96: Sudoku Solver
- web串口通讯
- android面试题:请描述下Activity的生命周期
- 生活中的两个经济学原理
- ActionBar(2) 标题和渐变背景设置
- 快速排序(quick sort)
- Iphone 手机助手 Plist 文件详解 (一)
- c++ 根据输入动态声明数组(一维,二维)
- RETE算法介绍
- 军报宣传我核潜艇部队重提甲午海战和致远号
- string的四个默认函数
- Netty长连接的事件处理顺序问题
- KMP字符串模式匹配详解
- 思忆