C语言排序算法
2018-06-18 04:04:29来源:未知 阅读 ()
1 #include<stdio.h> 2 #define N 10 3 void swap(int *p1, int *p2); 4 void BubbleSort(int *a); 5 void SelectSort(int a[]); 6 void QuickSort(int *a, int left, int right); 7 int main(){ 8 int a[N] = {3,6,9,8,5,3,1,6,0,2}; 9 int i; 10 //SelectSort(a); 11 QuickSort(a,0,sizeof(a)/sizeof(a[0])-1); 12 for(i=0; i<N; i++){ 13 printf("%d ", a[i]); 14 } 15 return 0; 16 } 17 18 void swap(int *p1, int *p2){ 19 int temp = *p1; 20 *p1 = *p2; 21 *p2 = temp; 22 } 23 void swap2(int a[], int i, int j) 24 { 25 int t = a[i]; 26 a[i] = a[j]; 27 a[j] = t; 28 } 29 void BubbleSort(int *a){ 30 31 int i,j; 32 for(i=0; i<N-1; i++){ /* 注意 N-1 */ 33 for(j=0; j<N-1-i; j++){ 34 if(a[j]>a[j+1]) 35 swap(&a[j],&a[j+1]); 36 } 37 } 38 39 } 40 41 void SelectSort(int a[]){ 42 int i,j,min; 43 44 for(i=0; i<N-1; i++){ /*一个n-1,下面n*/ 45 min = i; 46 for(j=i+1; j<N; j++){ 47 if(a[j]<a[min]) 48 min =j; 49 } 50 swap(&a[i],&a[min]); 51 } 52 } 53 54 void QuickSort(int *a, int left, int right){ 55 int key = a[left]; 56 int i = left; 57 int j = right; 58 59 60 if(left >= right) 61 return ; 62 63 while(i<j){ 64 while(i<j && a[j]>=key){ /*a[j]>=key 如果只写> 会进入死循环*/ 65 j--; 66 } 67 a[i] = a[j]; 68 while(i<j && a[i]<=key){ 69 i++; 70 } 71 a[j] = a[i]; 72 } 73 a[i] = key; 74 QuickSort(a, left, i-1); 75 QuickSort(a, i+1, right); 76 } 77 78 /* 79 最差时间分析 平均时间复杂度 稳定度 空间复杂度 80 冒泡 O(n2) O(n2) 稳定 O(1) 81 选择 O(n2) O(n2) 稳定 O(1) 82 快速 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 83 */
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ rand函数 2020-06-10
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C语言程序结构 2020-05-31
- C++冒泡排序 (基于函数模板实现) 2020-05-31
- OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭 2020-05-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash