#include <stdio.h>
/*冒泡排序由小到大
冒泡的中心思想是将前面的数
与其后面的所有数进行比较,
如果其后面有比它大的数,则
两者换位置,所以比较次数为
n*(n-1)/2
*/
/*int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a[100],i,j,p;
for(i=0;i<n;i++) //Input
scanf("%d",&a[i]);
for(i=0;i<n-1;i++) //核心算法 比较
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j]) //换位
{
p=a[i];
a[i]=a[j];
a[j]=p;
}
}
}
for(i=0;i<n;i++) //输出
{
printf("%d ",a[i]);
}
printf("\n");
}
}*/
/*选择排序 由小至大
选择排序的核心思想是在一个长度为N的
无序数组中,在第一趟遍历N个数据,找
出其中最小的数值与第一个元素交换,
第二趟遍历剩下的N-1个数据,找出其中
最小的数值与第二个元素交换......第
N-1趟遍历剩下的2个数据,找出其中最
小的数值与第N-1个元素交换,至此选
择排序完成。
*/
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a[100],i,j,min,minval;
for(i=0;i<n;i++) //Input
scanf("%d",&a[i]);
for(i=0;i<n;i++) //核心
{
min=i;
minval=a[i];
for(j=i+1;j<n;j++)
{
if(a[j]<minval)
{
minval=a[j];
min=j;
}
}
a[min]=a[i];
a[i]=minval;
}
for(i=0;i<n;i++) //输出
{
printf("%d ",a[i]);
}
printf("\n");
}
}
冒泡排序和选择排序
最新推荐文章于 2021-09-01 20:17:20 发布