冒泡排序:
思路:
一组数中,相邻的两个数进行比较、交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序。
要想对N个数字进行排序,循环N次即可.
实现代码:
void sort(int * a,int len)//接收主函数的数组地址,和长度 { int temp; for(int i=0;i <= len - i;i++) //需要比的趟数,假如有4个数,就需要比较3趟 { for(int j = 0;j <= len-i-1;j++) //每趟需要比较的次数 { if(a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } }
选择排序
/*2017年12月10日11:08:52 选择排序 *思路:先将10个数中最小的数和a[0]对换;再将a[1]~a[9]中 *最小的数与a[1]对换......每一比较一轮,找出一个未经排序的数中最小的一个。共比较9轮 * a[0] a[1] a[2] a[3] a[4] * 3 6 1 9 4 未排序的情况下 * 1 6 3 9 4 将5个数中最小的数1与a[1]对换 * 1 3 6 9 4 将余的4个数中最小的数3与a[1]对换 * 1 3 4 9 6 将余下的3个数中最小的数4与a[2]对换 * 1 3 4 6 9 将余下的2个数中最小的数6与a[3]对换 * 排序完成! */ #include <stdio.h> void sort(int a[],int n); int main(void) { int i,a[10]; printf("请输入10个数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("排序前:"); for(i = 0;i<10;i++) printf("%4d",a[i]); printf("\n"); sort(a,10); printf("排序后:"); for(i = 0;i< 10;i++) printf("%4d",a[i]); return 0; } void sort(int array[],int n) { int i,k,j,t; for(i=0;i<n-1;i++)//需要比较的次数 { k = i; for(j = i+1;j<n;j++) { if(array[j] < array[k])//如果后一位数字比前一位小就交换数字 k = j; } t = array[k]; array[k] = array[i]; array[i] = t; } }