当前位置: 首页 > article >正文

2024.10.27 直接插入排序 非递归后序遍历(复杂版)

直接插入排序 

思路:用temp变量存放需要插入前面有序序列的变量,然后用里面的那个for循环寻找到需要插入的位置。

额外注意的点:arr[j+1]=temp;这个是因为内置循环每次出来之后所指向的位置是我们要插入的位置的前一个(-1或者插入的位置-1)

#include <stdio.h>
int main(){
	int arr[10] = {9,8,7,6,5,4,3,2,1,0};
	int i,j,temp;
	for(i=0;i+1<10;i++){
		if(arr[i]>arr[i+1]){
		  temp = arr[i+1];
		  for(j=i;j>=0&&arr[j]>temp;j--){
			arr[j+1] = arr[j];   
		  } 
		  arr[j+1]=temp; //这里需要额外注意
		}	
	} 
	for(int i=0;i<10;i++)
	printf("%d",arr[i]);
	return 0;
}

非递归后序遍历

算法思想:和先序遍历和中序遍历的区别是:需要额外设置一个遍历指针的r(指向遍历节点指针p之前指向的节点)

需要注意的点:

我们需要注意的点就是访问右边节点的时候,需要区分是从根节点到右节点还是从右节点到根节点,如果是从根节点到右节点那么我们需要进行的操作是入栈右节点,如果是从右节点到根节点的话,那么我们需要进行的操作是对根节点进行出栈,打印并更新指针r指向指针p,并将p置空。


http://www.kler.cn/news/367412.html

相关文章:

  • 微信支付Java+uniapp微信小程序
  • JavaWeb合集18-接口管理Swager
  • Java线程安全
  • 【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (七):MongoDB的设置
  • 力扣283-- 移动零
  • 文本预处理操作简述
  • 基于STM32的智能寝室控制系统设计(论文+源码)
  • Spring Boot环境下论坛网站的架构与优化
  • idea 无法输入中文 快速解决
  • 2024 BuildCTF 公开赛|MISC
  • 【好玩的经典游戏】Docker环境下部署网页小游戏网站
  • 媒小象 1.7.2 | 完全免费的内容创作二创工具
  • uniapp 发起post和get请求!uni.request(OBJECT)
  • PouchDB - 免费开源的 JavaScript 数据库,轻量易用,用于离线保存数据的场景
  • 联想笔记本电脑睡眠后打开黑屏解决方法
  • 路由器 相关知识
  • 【Android】浅析OkHttp(1)
  • 【动态规划】力扣 70. 爬楼梯
  • pytorch dataloader学习
  • ros机器人导航以及物体、动作识别
  • SpringBoot多线程
  • MAC终端SSH连接成功但VSCODE连接失败解决方案
  • java实现的音视频格式转化器
  • Java进阶篇设计模式之一 ----- 单例模式
  • 前端学习---(6)js基础--4
  • RPA技术重塑企业自动化的未来