站点图标

C 插入排序

2018-11-20折腾记录算法 / Develop / C
本文最后更新于 607 天前,文中所描述的信息可能已发生改变

懒得写开头了(_ _)。゜ z zZ,继续下一个排序算法


_56
#include <stdio.h>
_56
#define N 10 //定义要排序的数组长度
_56
_56
//插入排序控制Demo
_56
//插入排序结果和方式
_56
//结果:输出排序的数组
_56
//方式:类似遍历比较
_56
_56
//本例排序从低到高
_56
_56
//插入排序函数
_56
int* Ins_Sort(int n, int nums[])
_56
{
_56
int i, j, temp;
_56
for(i = 1; i < n; i++) //外层循环控制循环轮数,从一开始代表第一个元素默认已经排序
_56
{
_56
for(j = i - 1; j >= 0; j--) //内层循环控制循环比较的轮数
_56
{
_56
//在下标 i 左边的元素已经排列,所以只要判断当原 i 的元素已经比第 j 个元素小,即完成此轮排列
_56
if(nums[j + 1] >= nums[j])
_56
{
_56
//完成排列时跳出,防止执行无用的步骤
_56
break;
_56
}
_56
else
_56
{
_56
//交换数据
_56
temp = nums[j + 1];
_56
nums[j + 1] = nums[j];
_56
nums[j] = temp;
_56
}
_56
}
_56
}
_56
//返回数组,其实也可以不用返回,因为操作的就是原数组
_56
return nums;
_56
}
_56
_56
int main(int argc, char const *argv[])
_56
{
_56
//要进行排序的数组,这里就不写循环录入了,直接初始化
_56
int nums[N] = {9, 2, 6, 1, 8, 5, 4, 3, 7, 10};
_56
int i;
_56
//调用函数进行排序
_56
int *p = Ins_Sort(N, nums);
_56
//循环输出排序好的数组,由小到大
_56
for(i = 0; i < N; i++)
_56
{
_56
printf("%d ", p[i]);
_56
}
_56
printf("\n");
_56
for(i = N - 1; i >= 0; i--)
_56
{
_56
printf("%d ", p[i]);
_56
}
_56
return 0;
_56
}

C 插入排序

https://blog.ixk.me/post/c-insert-sort
  • 许可协议

    BY-NC-SA

  • 发布于

    2018-11-20

  • 本文作者

    Otstar Lin

转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!

C 快速排序C 归并排序