下标 0 1 2 3 4 5 6 7 8 9 元素 4 7 8 1 0 9 2 5 3 6
i表示元素下标 下标 0 1 2 3 4 5 6 7 8 9 (第1轮排序之前的tmp = a[1],即要对7进行操作) 排序前 排序后 第1轮 4 7 8 1 0 9 2 5 3 6 4 7 8 1 0 9 2 5 3 6 第2轮 4 7 8 1 0 9 2 5 3 6 4 7 8 1 0 9 2 5 3 6 第3轮 4 7 8 1 0 9 2 5 3 6 1 4 7 8 0 9 2 5 3 6 第4轮 1 4 7 8 0 9 2 5 3 6 0 1 4 7 8 9 2 5 3 6 第5轮 0 1 4 7 8 9 2 5 3 6 0 1 4 7 8 9 2 5 3 6 第6轮 0 1 4 7 8 9 2 5 3 6 0 1 2 4 7 8 9 5 3 6 第7轮 0 1 2 4 7 8 9 5 3 6 0 1 2 4 5 7 8 9 3 6 第8轮 0 1 2 4 5 7 8 9 3 6 0 1 2 3 4 5 7 8 9 6 第9轮 0 1 2 3 4 5 7 8 9 6 0 1 2 3 4 5 6 7 8 9
下标 0 1 2 3 4 5 6 7 8 9 第6轮 0 1 4 7 8 9 2 5 3 6 0 1 2 4 7 8 9 5 3 6 i = 6; index = 0, index < i , a[index] < tmp, index = 1 0 2 index < i , a[index] < tmp, index = 2 1 2 index < i , a[index] > tmp, 4 2 index = 2
a[6] = a[5] a[5] = a[4] a[4] = a[3] a[3] = a[2] a[2] = tmp
|
get到的小技能: 1.如何利用rand()函数产生任意数值的随机数 2.main函数有实参 3.一有malloc马上就free 4.输出格式 printf(i == 0 ? "%d": ",%d", array[i]); //对输出格式进行限制 |
void directInsertSort(int *array, int count){ //直接插入排序
int index;
int i;
int j;
int tmp;
for(i = 1; i < count; i++){
tmp = array[i];
//查找
for(index = 0; index < i && array[index] < tmp; index++)
;
//移动
for(j = i; j > index; j--){
array[j] = array[j-1];
}
array[index] = tmp;
}
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void initData(int *array, int count, int minValue, int maxValue);
void showArray(int *array, int count);
void directInsertSort(int *array, int count);
void directInsertSort(int *array, int count){ //直接插入排序
int index;
int i;
int j;
int tmp;
for(i = 1; i < count; i++){
tmp = array[i];
//查找
for(index = 0; index < i && array[index] < tmp; index++)
;
//移动
for(j = i; j > index; j--){
array[j] = array[j-1];
}
array[index] = tmp;
}
}
void showArray(int *array, int count){
int i;
for(i = 0; i < count; i++){
printf(i == 0 ? "%d": ",%d", array[i]); //对输出格式进行限制
}
printf("\n");
}
void initData(int *array, int count, int minValue, int maxValue){
int i;
int value = maxValue - minValue + 1;
srand(time(NULL));
for(i = 0; i < count; i++){
array[i] = minValue + rand() % value;
}
}
void main(int argC, char ** argV){
int *array1;
int count;
count = atoi(argV[1]);
array1 = (int *)malloc(sizeof(int) * count);
initData(array1, count, 10, 99);
showArray(array1, count);
directInsertSort(array1, count);
showArray(array1, count);
free(array1);
}