不太理解插入排序,可参考此人博客较为详细:https://blog.csdn.net/qq2071114140/article/details/80428472
方法一:冒泡排序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(){
int i = 0, j = 0, m = 0;
int arr[] = {0};
printf("请输入三个数: ");
for (i = 0; i < 3; i++) {
scanf("%d", &arr[i]);
}
for (i = 0; i < 2; i++) {
for (j = 0; j < 2- i; j++) {
if (arr[j] > arr[j+1]) {
m = arr[j];
arr[j+1] = arr[j];
arr[j] = m;
}
}
}
printf("该数组从大到小的排列顺序为:");
for (i = 0; i < 3; i++) {
printf("%d ", arr[i]);
}
system ("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[10] = {0};
int i = 0, j = 0, k = 0;
printf("请输入十个数字");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < 10 - 1; ++i) { //比较10-1轮
for (j = 0; j < 10- 1 - i; ++j) { //每轮比较10-1-i次,
if (a[j] < a[j + 1]) {
k = a[j];
a[j] = a[j + 1];
a[j + 1] = k;
}
}
}
printf("该十个数字从小到大依次排列顺序:");
for (i = 0; i < 10; ++i) {
printf("%d ", a[i]);
}
printf("\n");
system("pause");
return 0;
}
方法二:选择排序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[10] = { 0 };
int i = 0, j = 0, k = 0;
printf("请输入10个数字: ");
for (i = 0; i < 10; ++i) {
scanf("%d",&a[i]);
}
for (i = 0; i < 10 - 1; ++i)
{
for (j = i + 1; j < 10; ++j)
{
if (a[i] > a[j])
{
k = a[i];
a[i] = a[j];
a[j] = k;
}
}
}
printf("该十个数字从小到大依次排列顺序:");
for (i = 0; i < 10; ++i) {
printf("%d ", a[i]);
}
printf("\n");
system("pause");
return 0;
}
方法三:插入排序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int i, j, t;
int a[10] = { 0 };
printf("请输入10个整数: ");
for (i = 0; i < 10; ++i) {
scanf("%d", &a[i]);
}
for (i = 1; i < 10; ++i) {
t = a[i];
for (j = i - 1; j > -1 && a[j] > t; j--) {
a[j + 1] = a[j];
}
a[j + 1] = t;
}
for (i = 0; i < 10; ++i) {
printf("%d ", a[i]);
}
system("pause");
return 0;
}