算法1:插入排序
//插入排序
//将key插入已排好序的数组a
//n表示已经排好序的元素个数
//key表示要新插入的元素
void insertArray(int a[], int n, int key)
{
int i;
for(i = n-1; i >= 0; i--) //i为下标
{
if(key > a[i])
{
a[i+1] = key;
break;
}
else
{
a[i+1] = a[i];
}
}
}
正式代码
#include <stdio.h>
#include <stdlib.h>
#define N 8
//插入排序
//将key插入已排好序的数组a
//n表示已经排好序的元素个数
//key表示要新插入的元素
void insertArray(int a[], int n, int key)
{
int i;
for(i = n-1; i >= 0; i--) //i为下标
{
if(key > a[i])
{
a[i+1] = key;
break;
}
else
{
a[i+1] = a[i];
}
}
}
//输出数组
void printArray(int a[], int n)
{
int i;
for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
int main()
{
int a[N] = {1, 5, 6, 2, 3, 8, 4, 7};
int i;
for(i = 0; i < N; i++)
{
insertArray(a, i, a[i]);
}
printArray(a, N);
return 0;
}
算法2:选择排序

//选择排序
void sort_select(int a[], int n)
{
int i, j ,k, t
for(i = 0
{
k = i
for(j = i
if(a[j] < a[k])
k = j
if(k != i)
{
t = a[i]
a[i] = a[k]
a[k] = t
}
}
}
正式代码
//选择排序
void sort_select(int a[], int n)
{
int i, j ,k, t
for(i = 0
{
k = i
for(j = i
if(a[j] < a[k])
k = j
if(k != i)
{
t = a[i]
a[i] = a[k]
a[k] = t
}
}
}
int main()
{
int a[10], i
for(i = 0
scanf("%d", &a[i])
sort_select(a, 10)
for(i = 0
printf("%d ", a[i])
printf("\n")
return 0
}
算法3:冒泡排序

//冒泡排序
void sort_bubble(int a[], int n)
{
int i, j , t; //i表示冒泡排序的轮次
for(i = 0; i < n-1; i++)
{
for(j = 0; j < n - i - 1; j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
正式代码
#include <stdio.h>
#include <stdlib.h>
//冒泡排序
void sort_bubble(int a[], int n)
{
int i, j , t; //i表示冒泡排序的轮次
for(i = 0; i < n-1; i++)
{
for(j = 0; j < n - i - 1; j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
int main()
{
int a[10], i;
for(i = 0; i < 10; i++)
scanf("%d", &a[i]);
sort_bubble(a, 10);
for(i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}