C语言的冒泡排序
#include <stdio.h>
//数组中得冒泡排序 相邻两个数比较,前>后
//交换数据(一般) 升序 降序
int main(void)
{
//充当了数据源
int a[10] = {1024,10,2,35,48,92,69,17,8,19};
//框架 + 建立交换法
int temp = 0,i,j;
//控制比较的次数
for(i=0;i<10;i++)
{
//每一个数比较的轮数
for(j=0;j<10-i-1;j++)
{
//前大于后 >升序 <降序
if(a[j]>a[j+1])
{
//内层循环 交换相邻
//两个数的值
temp = a[j];
a[j] = a[j+1];
a[j+1]=temp;
}
}
}
printf("-----------------------\n");
for(int i=0;i<10;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
选择排序的代码如下:
#include <stdio.h>
//选择排序(交换型的数据)
int main(void)
{
//数据源
int a[10] = {100,23,2,99,108,256,12,1024,512,1};
/*
1.先假定第一个数是最小的数,然后开始循环
从前往后取比较,找到最小的数,然后他们交换。
*/
int i,j,temp,min;
for(i=0;i<10;i++)//次数
{
//轮数 每次选择假定最小的数
min = i;
for(j=i+1;j<10;j++)
{
//有比这假定的最小的数还小
//就交换数据 默认是升序
if(a[min]>a[j])
{
temp = a[i];
/*把内层循环中找到,最小值交换给
a[i];*/
a[i] = a[j];
a[j] = temp;
}
}
}
for(int i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}