#include "stdio.h"
#define N 10
scan(int arr[], int n) //输入数组
{
for (int i = 0; i < n; i++)
scanf_s("%d", &arr[i]);
}
print(int arr[], int n) //输出数组
{
for (int i = 0; i < n; i++)
printf("%d\t", arr[i]);
}
sort1(int arr[], int n) //插入排序
{
int j,k;
for (int i = 1; i < n; i++) //总趟数,就是数组的长度
{
k = arr[i]; //K是比较的数的下标
j = i - 1; //J是比较的数的前一个数的下标
while (arr[j] > k&&j >= 0) //如果比较的数前面的一个比他大,比较的数就等于他 然后比较的数再和前面的数比较
{
arr[j + 1] = arr[j]; //比较的数不变 只是如果小就往前挪一个
j--;
}
arr[j + 1] = k; //最后比较的数等于不满足条件的数的后面一个
}
}
sort2(int arr[], int n) //选择排序
{
int i, j, min;
for (i = 0; i < n; i++) //总趟数是n次
{
min = i; //先赋值第一个是最小的
for (j = i; j < n; j++) // 从最小的开始 查找 如果有比他小的 min就赋值他的下标
{
if (arr[j] < arr[min])
min = j;
}
int temp = arr[i]; //然后最小的与第一个交换
arr[i] = arr[min];
arr[min] = temp;
}
}
sort3(int arr[], int n) //冒泡排序
{
for (int i = n - 1; i >= 0; i--) //一共是9趟 每次减一
for (int j = 0; j < i; j++) //把最大的数往后排 排一次减一次
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
int main()
{
int array[N]; //定义数组
scan(array, N); //输入数组
sort1(array, N); //插入排序
sort2(array, N); //选择排序
sort3(array, N); //冒泡排序
print(array, N); //输出数组
return 0;
}
以上代码是排序代码及解释 觉得有用的话记得收藏