插入排序可以说是最简单也是最基础的排序算法。但是因其时间复杂度为 O(n²),所以在数据量很大的情况下效率不高。效率更高的有归并排序和插入排序。以及一些概率性的排序算法。
就简单贴一下代码和运行结果了:
#include <stdio.h>
#define MAXLENGTH 100
void insertSortAscending(int array[], int n); //升序
void insertSortDecending(int array[], int n); //降序
int main()
{
int n = 1;
int array[MAXLENGTH];
printf("Enter array length:");
while(1 == scanf("%d", &n))
{
int i;
printf("Enter %d number(s):", n);
for(i = 0; i < n; ++i)
scanf("%d", &array[i]);
insertSortAscending(array, n);
insertSortDecending(array, n);
printf("Enter array length:");
}
return 0;
}
void insertSortAscending(int array[], int n)
{
int i;
for(i = 1; i < n; ++i)
{
int key = array[i];
int j = i - 1;
while(j >= 0 && key < array[j])
{
array[j+1] = array[j];
array[j] = key;
j--;
}
}
printf("Ascending Sorted: ");
for(i = 0; i < n; ++i)
printf("%d ", array[i]);
printf("\n");
}
void insertSortDecending(int array[], int n)
{
int i;
for(i = n - 2; i >= 0; --i)
{
int key = array[i];
int j = i + 1;
while(j <= n - 1 && key < array[j])
{
array[j-1] = array[j];
array[j] = key;
j++;
}
}
printf("Decending Sorted: ");
for(i = 0; i < n; ++i)
printf("%d ", array[i]);
printf("\n");
}
运行效果:
若有错误,请批评指正,欢迎交流