通过对近各大试卷题型分析,总结出 对于数据排序的十大方法,希望对大家有所帮助
方法一:冒泡排序法(升序排序法)
方法二:选择排序法
方法三:插入排序法
方法四:希尔排序法(Shell Sort)
方法五:归并排序法
方法六:快速排序法(交换排序法)
方法七:堆排序法
方法八:计数排序法
方法九:桶排序法
方法十:基数排序法
1.冒泡排序法
1.1 算法描述
步骤1: 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
步骤2: 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应 该会是最大的数;
步骤3: 针对所有的元素重复以上的步骤,除了最后一个;
步骤4: 重复步骤1~3,直到排序完成。
(1)对数列的排序:
#include <stdio.h>
#define sequence 10//自定义十个元素的数列
int main()
{
int a[sequence] = {12,43,9,13,67,98,101,89,3,35 };//十个数的无序数列
//也可以改为用scanf输入
int i, j, t;
printf("此程序使用冒泡排序法排列无序数列!\n");
//冒泡排序
for (i = 0; i < 10 - 1; i++)//n个数的数列总共扫描n-1次
{
for (j = 0; j < 10 - i - 1; j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
{
if (a[j] > a[j + 1])//后一位数比前一位数小的话,就交换两个数的位置(升序)
{
t = a[j + 1];
a[j + 1] = a[j];
a[j] = t;
}
}
}
printf("排列好的数列是:\n");
//输出排列好得吃数列
for (i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
return 0;
}
运行结果如下:
(2)对字符的排序
#include <stdio.h>
#define Character_groups 10//定义了十个字符的字符数组
int main()
{
char a[Character_groups] = { 'i','l','o','v','e','y','o','u','y','x' };//十个数的无序数列
//也可以改用scanf函数输入字符
int i, j;
char t;
printf("此程序使用冒泡排序法排列无序数列!\n");
//冒泡排序
for (i = 0; i < 10 - 1; i++)//n个数的数列总共扫描n-1次
{
for (j = 0; j < 10 - i - 1; j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
{