#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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复