您的位置:首页 > 其它

八大排序算法(1)_冒泡排序和选择排序

2013-08-29 11:06 239 查看
/************************************************************************/
/* @author lynnbest
排序复习:升序
1.冒泡
两个相邻依次比较交换,将最大的沉到最右边
两层寻坏,第一层控制比较次数,第二层控制遍历比较顺序
2.选择
从所有的位挑出最小的赋值给第0位
然后从剩下的当中,在选择最小的赋给第1个
依次 也就是找位置 在交换
*/
/************************************************************************/

#include <stdio.h>

void printfarray(int *a,int len);
void ascendsort_bubble(int *a,int n);
void acsendsort_choice(int *a,int n);

int main()
{
int a[]={6,8,4,3,2,1};
int len=sizeof(a)/sizeof(a[0]);
printf("排序前:\n");
printfarray(a,len);
ascendsort_bubble(a,len);
//	acsendsort_choice(a,len);
printf("排序后:\n");
printfarray(a,len);
return 0;
}

void printfarray(int *a,int len)
{
for(int i=0;i<len;i++)
printf("%3d",a[i]);
printf("\n");
}

void ascendsort_bubble(int *a,int n) //冒泡升序
{
int temp;
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}

void acsendsort_choice(int *a,int n) //选择升序
{
int min,temp;
for(int i=0;i<n;i++)
{
min=i;
for(int j=i;j<n;j++) //这个循环就是在找最小的 位置
if(a[min]>a[j])
min=j;

temp=a[min];	//将找到的最小和对应位置 交换
a[min]=a[i];
a[i]=temp;

}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: