c语言排序之冒泡排序,选择排序,插入排序,快速排序总结
2015-08-02 14:13
686 查看
这几天研究了一下排序算法,我发现网上很多代码给定的都是伪代码,或是里面表达的内容不清楚,不方便初学者学习与分析,然后我根据自己的经验把源代码写下来,仅供大家参考:
/*********************************************** * 作者 :skywalker_prime * 联系方式 :shanquan54@163.com * 最后修改时间 :2015-08-02 14:08 * 文件名称 :sorting.c * 程序描述 : * csdnd地址 :blog.csdn.net/skywalker_prime ***********************************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 6 void bubble(int a[],int n); void choose(int a[],int n); void insert(int a[],int n); void quick(int a[],int low,int high); int main() { int i=0; int a[6]={3,5,11,1,6,7}; // bubble(a,N); //choose(a,N); //insert(a,N); quick(a,0,N-1); for(i=0;i<N;i++)// 打印排序后的序列 printf("%d ",a[i]); printf("\n"); return 0; } #if 0 void bubble(int a[],int n)//冒泡排序法 { int temp=0; int i=0,j=0; for(i=1;i<N;i++) { for(j=N-1;j>=i;j--) { if(a[j]<a[j-1]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; } } } } #endif #if 0 void choose(int a[],int n)//选择法 { int i=0,j=0,k=0,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(k!=i) { temp=a[k]; a[k]=a[i]; a[i]=temp; } } } } #endif #if 0 void insert(int a[],int n)// 插入法 { int i,j,key; for(i=1;i<n;i++) { j=i; key=a[i]; while(j>0&&key<a[j-1]) { a[j]=a[j-1]; j--; } a[j]=key; } } #endif void quick(int a[],int low,int high)//快速排序 { int temp,i,j; if(low<high) { int key=a[low]; i=low,j=high; while(1) { while(i<j&&a[i]<key) i++; while(j>i&&a[j]>key) j--; if(i>=j) { break; } temp=a[i]; a[i]=a[j]; a[j]=temp; } temp=a[j]; a[j]=key; key=temp; quick( a, low, (j-1)); quick( a, i+1, high); return ; } }
相关文章推荐
- c++ primer 学习笔记-第五章
- 或许有一两点你不知的C语言特性
- 二叉查找树的C语言实现
- vc++ 如何添加右键弹出菜单
- C语言位域精解
- C++内联函数
- C++对象内存模型(堆栈模型)
- c语言位段
- 北大ACM作业练习 1001
- 北大ACM作业练习 1001
- c++ 常用代码片段
- MD5 C++源码
- c++ primer 学习笔记-第四章
- C语言详解+例子2
- C++ 虚函数表解析
- 把vim打造成牛逼的C++ IDE
- C语言:十进制进制转换为其他进制(思想:查表法)
- C语言:其他进制转换为十进制(方法二)
- C语言:其他进制数转换为十进制(方法一)
- Cinatra:高性能现代C++ Web框架