C语言排序实例(选择、冒泡、插入、折半、快速)
来源:互联网 发布:淘宝七乐康药店 假货 编辑:程序博客网 时间:2024/06/05 09:51
#include <stdio.h>///////////////////////选择法排序//a:为数组首地址//n:为数组元素个数void select_sort(int *a, int n){int i, j, k, temp;for(i = 0; i < n-1; i++){k = i;for(j = i+1; j < n; j++){if(a[k] > a[j]){k = j;}}if(i != k){temp = a[i];a[i] = a[k];a[k] = temp;}}}///////////////////////冒泡法排序void bubble_sort(int *a, int n){int i, j, temp;for(i = 0; i < n-1; i++){for(j = 0; j < n-1-i; j++){if(a[j] > a[j+1]){temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}}///////////////////////插入法排序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 && a[j] > temp; j--){a[j+1] = a[j];//将前面的值往后移}a[j+1] = temp; //插在a[j]的后面}}///////////////////////折半排序(希尔排序)void shell_sort(int *a, int n){int i, j, flag, temp;int gap = n;while(gap > 1){gap = gap/2; //增量缩小,每次减半(折半)do{flag = 0;//n-gap是控制上限不让越界for(i = 0; i < n-gap; i++){j = i + gap; //相邻间隔的前后值进行比较if(a[i] > a[j]){temp = a[i];a[i] = a[j];a[j] = temp;flag = 1;}}}while(flag != 0);}}///////////////////////快速排序//查找位置int find_pos(int *a, int low, int high){int val = a[low];while(low < high){while(low < high && a[high] >= val){//大于移动,小于则赋值,降序则相反high--;}a[low] = a[high];while(low < high && a[low] <= val){//小于移动,大于则赋值,降序则相反low++;}a[high] = a[low];}//终止while循环之后low和high一定是相等的//high可以改为lowa[low] = val;return low;}//low:第一个元素下标//high:最后一个元素下标void quick_sort(int *a, int low, int high){if(low < high){int pos = find_pos(a, low, high);quick_sort(a, low, pos-1);quick_sort(a, pos+1, high);}}int main(int argc, char *argv[]){int a[] = {2, 10, 8, 1, 9, 7, 5, 4, 0, 6, 3};int n = sizeof(a)/sizeof(a[0]); //数组元素个数//select_sort(a, n); //选择法排序//bubble_sort(a, n); //冒泡法排序//insert_sort(a, n); //插入法排序//shell_sort(a, n); //折半排序(希尔排序)quick_sort(a, 0, n-1); //快速排序int i = 0;for(i = 0; i < n; i++){printf("%d ", a[i]);}printf("\n");return 0;}
本教程示例代码下载请点此链接:http://download.csdn.net/detail/tennysonsky
0 0
- C语言排序实例(选择、冒泡、插入、折半、快速)
- C语言排序实例(选择、冒泡、插入、折半、快速)
- c语言排序实例(选择、冒泡、插入、折半、快速)
- C语言排序实例(选择、冒泡、插入、折半、快速)
- c语言各种常见排序(直接插入排序、折半插入排序、冒泡排序、选择排序、堆排序)
- C语言基本数据结构之五(折半插入,堆排序,冒泡排序,快速排序,并归排序)
- C语言实现冒泡、插入、选择、快速排序
- C语言实现冒泡、插入、选择、快速排序
- 排序算法实例(冒泡法排序、选择法排序、直接插入排序 、希尔法排序、折半插入排序)
- C语言程序----排序(直接插入排序,SHELL排序,冒泡排序,快速排序,简单选择排序,堆排序)
- 排序学习(直接插入排序,折半插入排序,冒泡排序,快速排序,简单选择排序)
- 冒泡排序,选择排序,快速排序,插入排序,折半选择排序
- Objective-C 冒泡 选择 插入 快速排序
- C 排序算法 (冒泡)(选择)|(插入)|(快速)
- C语言常用的几种排序算法代码(选择排序,冒泡排序,插入排序,快速排序)
- c语言排序之冒泡排序,选择排序,插入排序,快速排序总结
- C语言---算法(选择排序/冒泡排序/折半查找/进制查表法)
- 冒泡排序,插入排序,选择排序和快速排序-C语言
- Linux 磁盘管理
- c++primer之顺序容器(容器库概览)
- apache开启虚拟主机方法
- hdu2896-ac自动机
- [网络流24题] 21 最长k可重区间集(最大权不相交路径 ,最小费用最大流)
- C语言排序实例(选择、冒泡、插入、折半、快速)
- java版 利用栈实现括号匹配
- CCF-最大的矩形-201312-3
- linux下sed和awk命令使用入门
- Java中Runnable和Thread的区别
- 白化
- 编码解码模型和实现
- USACO 1.3 Prime Cryptarithm
- ABAP 保存SAP系统中全部自开发程序的程序一个