Note:本来打算把排序都写在一块儿,所以生成的随机数组本意是要重复用的,因此在排序算法里又赋值了一个数组。但发现写一块儿可能太乱了,就把不同的排序分开写了,函数里的数组就不带的删了,不影响。
直接插入排序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void PutNum(int *p, int n);//输出数组
void CreatRandomNum(int *p, int n);//生成随机数序列
void InsertSort(int a[], int n);//插入排序
int main() {
int a[10] = {
0};
int length = sizeof(a) / sizeof(a[0]);
CreatRandomNum(a, length);
printf("待排序序列为:");
PutNum(a, length);
InsertSort(a, length);//插入排序
return 0;
}
void InsertSort(int a[], int n) {
int b[10] = {
0};
for (int i = 0; i < n; i++)
b[i] = a[i];
for (int i = 1; i < n; i++) {
if (b[i] < b[i - 1]) {
//当两个数相同不会发生移动,所以算法稳定。
int j = i - 1;//从i的前一位开始比较