懒得写开头了(_ _)。゜ z zZ,继续下一个排序算法
#include <stdio.h>
#define N 10 //定义要排序的数组长度
//插入排序控制Demo
//插入排序结果和方式
//结果:输出排序的数组
//方式:类似遍历比较
//本例排序从低到高
//插入排序函数
int* Ins_Sort(int n, int nums[])
{
int i, j, temp;
for(i = 1; i < n; i++) //外层循环控制循环轮数,从一开始代表第一个元素默认已经排序
{
for(j = i - 1; j >= 0; j--) //内层循环控制循环比较的轮数
{
//在下标 i 左边的元素已经排列,所以只要判断当原 i 的元素已经比第 j 个元素小,即完成此轮排列
if(nums[j + 1] >= nums[j])
{
//完成排列时跳出,防止执行无用的步骤
break;
}
else
{
//交换数据
temp = nums[j + 1];
nums[j + 1] = nums[j];
nums[j] = temp;
}
}
}
//返回数组,其实也可以不用返回,因为操作的就是原数组
return nums;
}
int main(int argc, char const *argv[])
{
//要进行排序的数组,这里就不写循环录入了,直接初始化
int nums[N] = {9, 2, 6, 1, 8, 5, 4, 3, 7, 10};
int i;
//调用函数进行排序
int *p = Ins_Sort(N, nums);
//循环输出排序好的数组,由小到大
for(i = 0; i < N; i++)
{
printf("%d ", p[i]);
}
printf("\n");
for(i = N - 1; i >= 0; i--)
{
printf("%d ", p[i]);
}
return 0;
}
#include <stdio.h>
#define N 10 //定义要排序的数组长度
//插入排序控制Demo
//插入排序结果和方式
//结果:输出排序的数组
//方式:类似遍历比较
//本例排序从低到高
//插入排序函数
int* Ins_Sort(int n, int nums[])
{
int i, j, temp;
for(i = 1; i < n; i++) //外层循环控制循环轮数,从一开始代表第一个元素默认已经排序
{
for(j = i - 1; j >= 0; j--) //内层循环控制循环比较的轮数
{
//在下标 i 左边的元素已经排列,所以只要判断当原 i 的元素已经比第 j 个元素小,即完成此轮排列
if(nums[j + 1] >= nums[j])
{
//完成排列时跳出,防止执行无用的步骤
break;
}
else
{
//交换数据
temp = nums[j + 1];
nums[j + 1] = nums[j];
nums[j] = temp;
}
}
}
//返回数组,其实也可以不用返回,因为操作的就是原数组
return nums;
}
int main(int argc, char const *argv[])
{
//要进行排序的数组,这里就不写循环录入了,直接初始化
int nums[N] = {9, 2, 6, 1, 8, 5, 4, 3, 7, 10};
int i;
//调用函数进行排序
int *p = Ins_Sort(N, nums);
//循环输出排序好的数组,由小到大
for(i = 0; i < N; i++)
{
printf("%d ", p[i]);
}
printf("\n");
for(i = N - 1; i >= 0; i--)
{
printf("%d ", p[i]);
}
return 0;
}
C 插入排序
https://blog.ixk.me/post/c-insert-sort许可协议
BY-NC-SA
本文作者
Otstar Lin
发布于
2018/11/20
转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!