1、冒泡排序(Bubble Sort)
基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。
首先,要了解什么是冒泡排序。冒泡排序是常用的一种排序方法,其基本方法就是逐次比较。即一次比较两个数,若它们的顺序错误,则它们交换;重复进行,直到没有需要交换为止。
1.1 算法描述
- 比较相邻数字的大小,若第一个数比第二个数大,则相互交换
- 对每一对相邻的数作相同的工作,那么最后的数应该是最大的数;
- 针对所有数(除了最后一个)重复上述步骤,直到没有任何一对数字需要比较为止。
代码:
#include "stdio.h"
void main(){
int i,t,j,p;
int a[]={10,36,12,28,78,96,8,88};
int n=sizeof(a)/sizeof(a[0]);
printf("n=%d\n",n);
for(i=0;i<n-1;i++){
printf("第%d次排序如下: ", i+1);
for(j=0;j<n-i-1;j++){
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(p=0;p<n;p++){
printf("%-5d\t",a[p]);
}
printf("\n");
}
printf("最终排序的数组为: \n");
for(i=0;i<n;i++){
printf("%-5d\t", a[i]);
}
printf("\n");
}
2、选择排序(Selection Sort)
基本思想:依次选出数组最小的数放到数组的前面。首先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置。再从剩下数组中找出最小的数放到