C语言 冒泡排序 快速排序 直接插入排序 选择排序
2014-09-01 22:33
316 查看
C语言几种常见的算法
#include <stdio.h> /* 简单选择排序 */ void select_sort(int *p, int len) { int i, j; int min, tmp; for(i=0; i<len; i++) { min = i; for(j=i+1; j<len; j++) { if(p[min]>p[j]) { min = j; } } if(i!=min) { tmp = p[i]; p[i] = p[min]; p[min] = tmp; } } } /* 冒泡排序 */ void bubble_sort(int *p, int len) { int i, j, tmp; for(i=0; i<len; i++) { for(j=i+1; j<len; j++) { if(p[i]>p[j]) { tmp = p[i]; p[i] = p[j]; p[j] = tmp; } } } } /* 直接插入排序 */ void insert_sort(int *p, int len) { int i, j, tmp; for(i=1; i<len; i++) { if(p[i]<p[i-1]) { tmp = p[i]; for(j=i-1; j>=0 && p[j]>tmp; j--) { p[j+1] = p[j]; } p[j+1] = tmp; } } } /* 交换两个数 */ void swap(int *p, int a, int b) { int tmp; tmp = p[a]; p[a] = p[b]; p[b] = tmp; } /* */ int partition(int *a, int low, int high) { int key; key = a[low]; // 找一个基准点 while(low<high) { while(low<high && a[high]>=key) high--; // a[low] = a[high]; swap(a, low, high); while(low<high && a[low]<=key) low++; // a[high] = a[low]; swap(a, low, high); } return low; } /* 快速排序 */ void qsort(int *a, int low, int high) { int pivot; if(low<high) { pivot = partition(a, low, high); qsort(a, low, pivot-1); qsort(a, pivot+1, high); } } int main() { int a[] = {2,33,4,432,23,1,423,3,78,932,100}; int len = sizeof(a)/sizeof(int); int i; printf("len=%d\n", len); bubble_sort(a, len); printf("bubbleSort\n"); for(i=0; i<len; i++) { printf("%d, ", a[i]); } select_sort(a, len); printf("\nselect\n"); for(i=0; i<len; i++) { printf("%d, ", a[i]); } insert_sort(a, len); printf("\ninsert\n"); for(i=0; i<len; i++) { printf("%d, ", a[i]); } partition(a, 0, len); qsort(a, 0, 9); printf("\nquicksort\n"); for(i=0; i<len; i++) { printf("%d, ", a[i]); } }
相关文章推荐
- C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- 快速排序,选择排序,直接插入,冒泡排序的javascript实现
- 比较排序总结——直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序
- 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
- c语言各种常见排序(直接插入排序、折半插入排序、冒泡排序、选择排序、堆排序)
- java实现各种基础排序(冒泡排序、快速排序、直接选择排序、堆排序、直接插入排序、归并排序)
- C语言实现基本排序算法----排序(直接插入排序,SHELL排序,冒泡排序,快速排序,简单选择排序,堆排序)
- python排序算法-冒泡排序,选择排序,直接插入排序,希尔排序,归并排序,快速排序,堆排序
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- oc中的排序 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序
- 编程实现直接插入排序、希尔排序、冒泡排序、快速排序、选择排序
- Java 选择排序、冒泡排序、快速排序、直接插入排序、Java自带的排序等方法的使用和总结
- IOS- 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序
- 常见排序集合(冒泡排序,选择排序,直接插入排序,二分插入排序,快速排序,希尔排序,归并排序)
- 冒泡排序 快速排序 选择排序 堆排序 直接插入排序 希尔排序 归并排序
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序...)
- 排序算法(快速排序、直接插入排序、直接选择、冒泡排序)
- 十二.C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序,堆排序)
- C语言常用排序——直接插入,冒泡,选择,希尔,快速,堆排序