利用插入排序的思想,求解:#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 20
//插入排序
void InsertSort(int arr[], int len)
{
int i, j, tmp;
for (i = 1; i < len; i++)
{
tmp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > tmp; j--)
{
arr[j + 1] = arr[j];
}
arr[j + 1] = tmp;
}
}
//打印字符串
void PrintArr(int arr[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
srand((unsigned int)time(NULL));
int a[MAX];
int b[7] = { 0 }; // 假设k=6, 定义一个b[k+1]数组,插入排序中,数据后移,防止越界
int i, j, pos = 0, tmp = a[0];
for (i = 0; i < MAX; i++)
{
a[i] = rand() % 100;
}
for (i = 0; i < MAX; i++)
{
for (j = 5; j >= 0 && b[j] < a[i]; j--)
{
b[j + 1] = b[j]; //数据后移,填坑
}
b[j + 1] = a[i];
}
//b[5]即第6大的数,遍历数组,求b[5]对应的下标
for (i = 0; i < MAX; i++)
{
if (a[i] == b[5])
{
pos = i;
printf("pos:%d->%d\n", pos, b[5]);
}
}
PrintArr(a, MAX);
InsertSort(a, MAX);
PrintArr(a, MAX);
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 20
//插入排序
void InsertSort(int arr[], int len)
{
int i, j, tmp;
for (i = 1; i < len; i++)
{
tmp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > tmp; j--)
{
arr[j + 1] = arr[j];
}
arr[j + 1] = tmp;
}
}
//打印字符串
void PrintArr(int arr[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
srand((unsigned int)time(NULL));
int a[MAX];
int b[7] = { 0 }; // 假设k=6, 定义一个b[k+1]数组,插入排序中,数据后移,防止越界
int i, j, pos = 0, tmp = a[0];
for (i = 0; i < MAX; i++)
{
a[i] = rand() % 100;
}
for (i = 0; i < MAX; i++)
{
for (j = 5; j >= 0 && b[j] < a[i]; j--)
{
b[j + 1] = b[j]; //数据后移,填坑
}
b[j + 1] = a[i];
}
//b[5]即第6大的数,遍历数组,求b[5]对应的下标
for (i = 0; i < MAX; i++)
{
if (a[i] == b[5])
{
pos = i;
printf("pos:%d->%d\n", pos, b[5]);
}
}
PrintArr(a, MAX);
InsertSort(a, MAX);
PrintArr(a, MAX);
system("pause");
return 0;
}