一日一码03——插入排序

2024-03-05 03:38
文章标签 03 一码 插入排序 一日

本文主要是介绍一日一码03——插入排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

把基本排序都补全吧。


插入排序


//插入排序	2013/09/08#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>//范例程序,从后往前比较,比较和移位一次循环就够了,精妙!
void insertSort(int* a, int n){int i,j,tmp;for( i = 1; i < n; i++){tmp = a[i];j = i - 1;while( j >= 0 && tmp < a[j]){	//我错写成过 j > 0a[j+1] = a[j];j--;}a[j+1] = tmp;	//我错写成过 a[j - 1] = tmp;}}//鄙人拙作,从前向后比较,比较和移位分别用2次循环,麻烦!
//有一次运行结果不对,现在都没查出原因,谁看出来请斧正!
void insertSort_my(int* a, int n){int i,j,tmp,pos;for ( i = 0 ; i < n ; i++){//哨兵tmp = a[i];pos = 0;//寻找插入位置for ( j = 0 ; j < i - 1; j++ ){if(tmp <= a[0]){pos = 0;break;}if(tmp >= a[i - 1]){pos = i;break;}if(tmp >= a[j] && tmp < a[j+1]){pos = j+1;break;}}//比哨兵大的元素后移for( j = i; j > pos; j--){a[j] = a[j-1];}//插入到正确位置a[pos] = tmp;}
}void initArr(int* a, int n){int i;srand(time(NULL));for(i = 0; i < n; i++){a[i] =  rand()%100;}
}void printArr(int* a, int n){int i;for (i = 0;i < n; i++){printf("%d,",a[i]);}printf("\n");
}void main(){int* arr;int n;printf("Input the size of array:");scanf("%d",&n);arr = (int *)malloc(n*sizeof(int));initArr(arr,n);printArr(arr,n);insertSort(arr,n);printArr(arr,n);}


这篇关于一日一码03——插入排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775214

相关文章

图形编辑器基于Paper.js教程03:认识Paper.js中的所有类

先来认一下Paper的资源对象,小弟有哪些,有个整体的认识。认个脸。 在Paper.js的 官方文档中类大致有如下这些: 基类: ProjectViewItemPointToolSizeSegmentRectangleCurveCurveLocationMatrixColorStyleTweenToolEventGradientGradientStopEvent 二级或三级类 继承Ite

Android自定义View学习笔记03

Android自定义View学习笔记03 参考gitHub上面的开源项目CircleImageView 预备知识 BitMap类 BitMap位图类,其中有一个嵌套类叫Bitmap.Config,内部有四个枚举值。这个类的作用是定义位图存储质量,即存储一个像素的位数,以及是否能显示透明、半透明颜色(Possible bitmap configurations. A bitmap co

软考初级网络管理员_03_硬件单选题

1.CPU是一块超大规模的集成电路,其主要部件有()。 运算器、控制器和系统总线 运算器、寄存器组和内存储器 控制器、存储器和寄存器组 运算器、控制器和寄存器组 2.(请作答此空)是指CPU一次可以处理的二进制的位数,它直接关系到计算机的计算精度、速度等指标:运算速度是指计算机每秒能执行的指令条数,通常以()为单位来描述。 宽带 主频 字长 存储容量 3.CPU执行指令时,先根

03 TensorFlow 2.0:TOPK Accuracy实战

这江山风雨 岁月山河 刀光剑影 美了多少世间传说 且看他口若悬河 衣上有风尘 却原来是一位江湖说书人                                                                                                                                 《说书人》 在分类问题中会遇到TO

Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!

代码仓库 会同步代码到 GitHub https://github.com/turbo-duck/flink-demo 当前章节 继续上一节的内容:https://blog.csdn.net/w776341482/article/details/139875037 上一节中,我们需要使用 nc 或者 telnet 等工具来模拟 Socket 流。这节我们写一个 ServerSocket

source配置文件不生效 原创 2016年03月14日 18:43:55 3558 问题背景: 升级jdk 1.8之后,启动时报版本编译问题,查看$JAVA_HOME,$JRE_HOME

source配置文件不生效 原创  2016年03月14日 18:43:55 3558 问题背景:       升级jdk 1.8之后,启动时报版本编译问题,查看$JAVA_HOME,$JRE_HOME,没有问题。      初步推断是没有source,sourec .bashrc 之后查看$JAVA_HOME,$JRE_HOME变成1.8版本,但启动时还是报错,这就

Java基础的重点知识-03-方法与数组

文章目录 方法数组 方法 定义方法的格式详解 修饰符 返回值类型 方法名(参数列表){//代码省略...return 结果;} 修饰符: public static 固定写法返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者参数列表:方法在运算过程中的未知数据,调用者调用方法时传递return:将方法执行后的结果带给调用者,方法执行到 return

十大经典排序算法——插入排序与希尔排序(超详解)

一、插入排序 1.基本思想 直接插入排序是一种简单的插入排序法,基本思想是:把待排序的记录按其数值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。 2.直接插入排序 当插入第 end + 1 个元素时,前面的arr[0],arr[1],...  ,arr[end]已经排好序,此时用arr[end + 1]的值与arr[end],arr[end -

【Rust日报】 2019-03-31

Rust日报小组成立 从下周开始将由ChaosBot、Mike和Damody三位轮流发布日报,其中Damody为台湾同胞,如果大家看到中文繁体日报,就是他发布的。 发日报有什么好处?我来给大家透露一下。至少有三点好处: 了解Rust生态最新动态锻炼自己的总结能力。对于感兴趣的文章,可以快速汲取其主要观点。为自己的提升和学习铺垫了资料库。 所以,也欢迎大家参与Rust日报的内容建设中。 Ocyp

【Rust日报】 2019-03-30

使用rust與tensor來做臉部辨識 Read more Ocypod: 一個用Redis來備份的工作佇列 基於actix來實作,目前看起來功能還沒有 beanstalkd 之類的老牌 job queue 完整 不過效能應該是可以期待的,使用json來溝通 如果之後能直接支援 protobuff 就好了 畢竟json比protobuff慢多了 Read more sgx sdk 1.0了 In