1.冒泡排序过程:
(1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交
换;然后比较第二个数与第三个数;依次类推,直至第n-1
个数和第n个数比较为止——第一趟冒泡排序,结果最大的
数被安置在最后一个元素位置上
(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数
被安置在第n-1个元素位置
(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
#include<stdio.h>
#define N 10
int main(int argc, const char *argv[])
{
static int a[N];
int i,j,t;
printf("请输入十个数:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("输出的数:");
for(i=0;i<N;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
printf("冒泡排序(从小到大):");
for(i=0;i<N;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(a[j] < a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
printf("冒泡排序(从大到小):");
for(i=0;i<N;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
return 0;
}
2.选择排序过程:
(1)首先通过n-1次比较,从n个数中找出最小的, 将它与
第一个数交换—第一趟选择排序,结果最小的数被安置在第
一个元素位置上
(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小
的记录,将它与第二个数交换—第二趟选择排序
(3)重复上述过程,共经过n-1趟排序后,排序结束
#include<stdio.h>
#define N 10
int main(int argc, const char *argv[])
{
static int a[N];
int i,j,t,min;
printf("请输入十个数:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("输出的数:");
for(i=0;i<N;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
for(i=0;i<N-1;i++)
{
for(j=0,min=0;j<N-1-i;j++)
{
if(a[min] < a[j+1])
{
min = j+1;
}
}
t = a[N-1-i];
a[N-1-i] = a[min];
a[min] = t;
}
printf("选择排序(从小到大):");
for(i=0;i<N;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
for(i=0;i<N-1;i++)
{
for(j=0,min=0;j<N-1-i;j++)
{
if(a[min] > a[j+1])
{
min = j+1;
}
}
t = a[N-1-i];
a[N-1-i] = a[min];
a[min] = t;
}
printf("选择排序(从大到小):");
for(i=0;i<N;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
return 0;
}