冒泡法、选择法、插入法排序
#include<stdio.h>
void inputArray(int a[], int n); //输入数组元素
void outputArray(int a[], int n); //输出数组元素
void sort01(int a[], int n); //冒泡法排序
void sort02(int a[], int n); //选择法排序
void sort03(int a[], int n); //插入法排序
int main()
{
int n;
printf("请输入数组的长度:
");
scanf("%d", &n);
int a[n];
//测试冒泡法排序
inputArray(a, n);
sort01(a, n);
outputArray(a, n);
//测试选择法排序
inputArray(a, n);
sort02(a, n);
outputArray(a, n);
//测试插入法排序
inputArray(a, n);
sort03(a, n);
outputArray(a, n);
return 0;
}
//输入数组元素
void inputArray(int a[], int n)
{
printf("
请输入这些数组的元素:
");
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
}
//输出数组元素
void outputArray(int a[], int n)
{
printf("输出结果如下:
");
for(int i = 0; i < n; i++)
printf("%d ", a[i]);
}
//冒泡法排序
void sort01(int a[], int n)
{
printf("
冒泡法排序:
");
int temp = 0;
for(int i = 1; i < n; i++)
{
for(int j = 0; j < n - i; j++)//每次循环完毕最大值已挪至最后元素
{
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
//选择法排序
void sort02(int a[], int n)
{
printf("
选择法排序:
");
int temp = 0;
for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j < n; j++)//每次循环将最小值挪至最前下标
{
if(a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//插入法排序
void sort03(int a[], int n)
{
printf("
插入法排序:
");
int temp = 0;
for(int i = 1; i < n; i++)
{
for(int j = i; j > 0; j--)//每次循环将最大值挪至最后下标
{
if(a[j] < a[j-1])
{
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
}