冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
/*
用选择法对10个数进行排序
*/
#include<stdio.h>
void main()
{
int i,j,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10-1;i++)
{//n个数要进行n-1趟比较
for(j=i+1;j<10;j++) //每趟比较n-i次
if(a[j-1]>a[j]) //依次比较两个相邻的数,将小数放在前面,大数放在后面
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++) //输出比较之后的数组
printf(" %d",a[i]);
}
选择排序 (Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾(目前已被排序的序列)。以此类推,直到所有元素均排序完毕.
#include<stdio.h> void main() { int i,j,min,a[10]; printf("Please input 10 integers:\n"); for(i=0;i<10;i++) scanf("%d,&a[i]; for(i=0;i<10;i++) printf("original:%d\n", a[i]; for(i=0;i<10-1;i++) { min=i; for(j=i+1;j<10;j++) { if (a[min]>a[j] min=j; } if(i!=min) { int tmp=a[i]; a[i]=a[min]; [min]=tmp; } } for(i=0;i<10;i++) printf("bubbled:%d\n", a[i]; }