冒泡排序和选择排序
冒泡法:相邻的两个数作比较然后根据要求选择切换位置
选择排序:选择Paiute的思路为:设10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1] 比a[2]~a[10]都小,则不进行交换,及无任何操作。若a[2]~a[10]中有一个以上比a[1]小,则将其中最小的一个(假设a[i])与a[1]交换,此时a[1]存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中最小的a[i]与a[2]对换,此时a[2]中存放的是10个中第二小的数,依次类推。
使用c语言编写的代码如下
#include<stdio.h>
int main()
{
int a[]={1,23,14,23,4,51,23,43,12,54};
int i,j, min;
// 冒泡法
for(i = 0; i<10-1; i++) // 冒泡排序是自身相邻的书比较
{
for(j = 0; j < 10 - i - 1; j++)
{
if(a[j] > a[j + 1])
{
min = a[j + 1];
a[j + 1] = a[j];
a[j] = min;
}
}
}
// 选择法
// for(i = 0; i<9; i++) // 这里i<9 是因为a[10]是最后一位不需要比较了
// {
// 这里的j=i+1 是因为避免自我比较, j < 10 (10是数组长度)
// for(j=i+1; j < 10; j++)
// {
// a[1]与a[2]~a[10]比较 。。a[2] 与 a[3]~a[10]比较(a[i]//表示第i个元素)
// if(a[i] > a[j])
// {
// min = a[i];
// a[i] = a[j];
// a[j] = min;
// }
// }
// }
printf("排序后的结果\n");
for(i = 0; i < 10; i++)
{
printf("%5d", a[i]);
}
return 0;
}