#include<stdio.h> #define SWAP(x,y) {int t;t=x;x=y;y=t;} //选择排序法: /* 将要排序的对象最为两部分,一部分是已排序的,一部分是未排序的; 每次从未排序的部分中找出最小值,放入已排序的后面 */ int *SelectionSort(int *p,int num) { int i,j,index_min,temp; for(i=0;i<num-1;i++) { index_min = i; for(j=i+1;j<num;j++) //未排序部分中寻找最小值 { if(*(p+j)<*(p+index_min)) { index_min=j; } } if(index_min!=i) { SWAP(*(p+i),*(p+index_min)); } } return p; } //插入排序法: /*将对象分为两堆,每次取后面一堆中最靠前的元素插入到前面的合适位置*/ int *InsertionSort(int *p,int num) { int i,j,k,temp=0; for(i=1;i<num;i++) { temp = *(p+i);//依次取后面最靠前的数据 j = i-1; while(temp<*(p+j))//注意体会次循环的巧妙 { *(p+j+1) = *(p+j); j--; if(-1 == j) break; } *(p+j+1) = temp; } return p; } //冒泡排序法: /*一次循环比较相邻元素*/ int *BubbleSort(int *p,int num) { int i,j,temp; temp = p[0]; for(i=0;i<num-1;i++) { for(j=0;j<num;j++) { if(p[j]<p[j+1]) { SWAP(p[j+1],p[j]); } } } return p; } int main() { int i,num[10]={3,45,67,1,2,0,35,70,21,10},*ptr; int length =10; // ptr = SelectionSort(num,length); // ptr = InsertionSort(num,length); ptr = BubbleSort(num,length); for(i=0;i<length;i++) { printf("%d ",*(ptr+i)); } return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复