#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n,i,j,k,a[10000],t=0;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for (i = 1; i < n; i++)//从a[i]开始无序,循环将a[i]放到合适位置
{
for (j = 0; j<i; j++)//有序部分即左部分
{
if (a[i] < a[j])//j+1次将插入的和已排好的比
{
t = a[i];
for (k = i; k > j; k--)//i-j次
{
a[k] = a[k - 1];//向后移一个位置
}
a[j] = t;
break;
}
}
}
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
冒泡排序
#include <stdio.h>
void BubbleSort1(int a[],int n)
{
for (int i = 0; i < n; i++)//控制轮数
{
for (int j = 0 ; j < n-i-1; j++)//控制每轮比较的数目
{
if (a[j + 1] < a[j])
{
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
}
int main()
{
int N, i, a[100];
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
BubbleSort1(a, N);
}
选择排序
#include <stdio.h>
void SelectSort(int a[], int n)
{
int temp,t;
for (int i = 0; i < n ; i++)//比较轮数
{
t = i;
temp = a[t];
for (int j = i+1; j < n; j++)//查找最小数字
{
if (a[j] < temp)
{
t = j;//保存最小下标
temp = a[j];//保存最小值
}
}
a[t] = a[i];//交换当前数值和最小数值的下标及数值
a[i] = temp;
}
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
}
int main()
{
int N, i, a[100];
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
SelectSort(a, N);
}