C语言.冒泡选择及快排
2016-07-23 10:39
531 查看
C语言版
1:冒泡及选择排序————用指针作函数参数
2:快速排序
1:冒泡及选择排序————用指针作函数参数
#include <stdio.h> #define N 10 int bubble_sort (int array[],int(*compare)(int,int)); int Ascending (int a,int b); void swap (int *a,int *b); int selection_sort (int array[],int(*compare)(int,int)); int bubble_sort (int *q); int array ; void print (int *p) { for(p = array ;p<array+N; p++) printf("%d ",*p); } int bubble_sort (int *q) { int i,j,t; for(i = 0; i<N; i++) for(j = 0; j<N-i-1; j++) { if(*(q+j)>*(q+j+1)) { t = *(q+j); *(q+j) = *(q+j+1); *(q+j+1) = t; } } printf("\n*q bubble sort:\n"); for(q = array; q<array+N; q++) printf("%d ",*q); } int bubble_sort(int array[],int(*compare)(int,int)) { int i,j; for(i = 0; i<N; i++) { for(j = 0; j<N-i-1; j++) if((*compare)(array[j],array[j+1])) swap(&array[j],&array[j+1]); } printf("bubble sort:\n"); for(i = 0; i<N; i++) printf("%d ",array[i]); } int selection_sort(int array[],int(*compare)(int,int)) { int i,j; for(i = 0; i<N; i++) for(j = i; j<N-1; j++) { if((*compare)(array[i],array[j])) swap(&array[i],&array[j]); } printf("\nselection sort:\n"); for(i = 0; i<N; i++) printf("%d ",array[i]); } void swap(int *a,int *b) { int t; t = *a; *a = *b; *b = t; } int Ascending(int a,int b) { if(a>b) return 1; else return 0; } int main() { int i,j; int *p = array; for(p = array; p<array+N; p++) scanf("%d",p); bubble_sort(array,Ascending);//函数作为参数传递 selection_sort(array,Ascending); bubble_sort(array); }
2:快速排序
#include<stdio.h> #define N 10 int a ; int quicksort(int left,int right) { if(left>right) return 0; int i,j,temp,t; temp = a[left]; i = left; j = right; while(i!=j) { while(i<j&&a[j]>=temp) j--; while(i<j&&a[i]<=temp) i++; if(i!=j) { t = a[i]; a[i] = a[j]; a[j] = t; } } a[left] = a[i]; a[i] = temp; quicksort(left,i-1); quicksort(i+1,right); } int main() { int i; for(i = 0; i<N; i++) scanf("%d",&a[i]); quicksort(0,N-1); for(i = 0; i<N; i++) printf("%d ",a[i]); }
相关文章推荐
- c语言 数组中的sizeof()
- c++ std:: advance
- C/C++ 中fopen_s与fopen
- NYOJ 23取石子问题(巴什博弈)
- C++ virtual函数 实现机制
- C++、Visual C++、MFC(编译和封装)之间的关系是什么?
- 使用QProxyStyle定制QMenu (二)
- sprintf和sscanf的用法
- C++软件添加dump调试打印日志(推荐)
- C语言实现ping功能(查看设备联网状态)
- C语言中字符串的赋值
- C++重载函数 const形参 引用指针 const_cast
- 继承
- 【C++11】C++11新增的便利算法[1] all_of、any_of 和 none_of
- 李洪强漫谈iOS开发[C语言-017]-printf函数
- c语言程序结构,全局变量,局部变量
- 李洪强漫谈iOS开发[C语言-016]-变量的作用域
- C语言学习-结构体
- 李洪强漫谈iOS开发[C语言-015]-变量的使用
- C语言基础知识