几种排序算法比较
2015-06-15 15:47
447 查看
#include<stdio.h> int *mp_sort(int *a,int len)//冒泡排序 { if(a== NULL|| len <= 0) return NULL; int i = 1, j = 1; for (i; i < len - 1;++i) for (j = 0; j <len- i; ++j) { int temp; if (a[j]>a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } return a; } int Bin_search(int *a, int len,int key)//二分查找 { if (a == NULL || len <= 0) return NULL; int low = 0, high = len - 1; while (low<=high) { int middle = (low + high) / 2; if (a[middle] == key) return middle; else if (a[middle] < key) low = middle + 1; else high = middle - 1; } return -1; } int *ch_sort(int *a, int len) //选择排序 { if (a == NULL || len <= 0) return NULL; int i, j; for (i = 0; i < len - 1;++i) for (j = i + 1; j < len;++j) if (a[i]>a[j]) { int temp; temp = a[i]; a[i] = a[j]; a[j] = temp; } return a; } int partition(int a[], int len, int low, int high)//利用分治法进行一趟快速排序 { if (a == NULL || len <= 0 || low < 0 || high >= len) return -1; int start = low; while (low < high) { if (a[high] <a[start]) { int temp; temp = a[start]; a[start] = a[high]; a[high] = temp; start = high; low++; if (a[low]>a[start]) { temp = a[low]; a[low] = a[start]; a[start] = temp; start = low; high--; } } else high--; } return start; } int *quik_sort(int a[], int len, int low, int high)//快速排序 { if (low==high) return NULL; int p = partition(a, len, low, high); quik_sort(a, len, low, p - 1); quik_sort(a, len, p + 1, high); return a; } int main() { int a[] = { 10,2,9,4,5,6,7,8,3}; int i = 0; //int *p = sort(a, sizeof(a)/sizeof(a[0])); /*int i = 0; if (p!=NULL) /*for (i; i < sizeof(a) / sizeof(a[0]); ++i) printf("%d ", *(a + i));*/ /*int m = Bin_search(a, (sizeof(a) / sizeof(a[0])),1); if (m) printf("%d\n", a[m]);*/ int *p=quik_sort(a, 9, 0, 8); for (i; i < sizeof(a) / sizeof(a[0]); ++i) printf("%d ",a[i]); printf("\n"); return 0; }
相关文章推荐
- unity3D 射线碰撞检测
- 在Windows上配置Django + WSGI
- Unity面试题
- Cocos2d-x 3.x 全平台新手开发配置教程
- VC++ 常见调试错误:fatal error LNK1561: entry point must be defined
- centos网络配置
- 初步了解redis
- Java Web 架构 需要解决的几个问题
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
- IOS - CoreData的使用
- 《大话设计模式》--男人和女人--访问者模式<Visitor>(28)
- ActiveMQ入门实例
- Redis 学习第一课:安装Linux Redis(Ubantu)
- UnityAssetExplorer + PowerVRTexTool
- RHEL6:lvs+keepalived
- C++递归线性阵列搜索数字的方法
- wireshark抓包分析
- error C2440: 'static_cast' 错误的解决方法
- Linux有问必答:Linux上如何查看某个进程的线程
- 详解协方差与协方差矩阵