c语言数据结构之 插入排序
算法:从第二个元素开始,与前一个元素进行比较,如果小于前一个元素,两者交换位置,一直循环到不再小为止
编译器:VS2013
代码
1 #include "stdafx.h" 2 #include<stdio.h> 3 #include<stdlib.h> 4 5 //函数声明 6 void InsertSort(int a[], int n); //插入排序(从小到大) 7 8 int main() 9 { 10 int i, n, a[100]; 11 printf("请输入需要排序元素的个数:"); 12 scanf_s("%d", &n); 13 printf("随机生成的数组为:"); 14 for (i = 1; i <= n; i++) 15 { 16 a[i] = rand() % 100 + 1; 17 printf("%d ", a[i]); 18 } 19 a[i] = '\0'; 20 printf("\n"); 21 22 InsertSort(a, n); 23 } 24 25 //插入排序(从小到大) 26 void InsertSort(int a[], int n) 27 { 28 int i = 2, j; 29 while (i <= n) 30 { 31 j = i; 32 a[0] = a[i]; 33 while (a[j] < a[j - 1]) 34 { 35 a[j] = a[j - 1]; 36 a[j - 1] = a[0]; 37 j--; 38 } 39 i++; 40 } 41 printf("插入排序后的结果(从小到大):"); 42 for (i = 1; i <= n; i++) 43 printf("%d ", a[i]); 44 printf("\n\n"); 45 }
结果