C/C++ | 27-18 n的无序数组,求排序算法,并且要求时间复杂度为O(n)

使用快速排序法对一维数组进行排序 使用快速排序法对一维数组进行排序,程序完全可以运行,方便大家学习 立即下载
/*
写出程序把一个链表中的节点顺序倒排

*/

#include <cstdio>
#include <deque>
#include <algorithm>
#include <iterator>
#include <stdio.h>  
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <assert.h>

using namespace std;

typedef struct LNode
{
	int data;
	struct LNode *next;
}LNode;

LNode *CreateLink(int num)  // 构造
{
	int i = 1;
	LNode *head, *tail, *p;
	head = (LNode *)malloc(sizeof(LNode));
	tail = head;
	while (num--)
	{
		p = (LNode *)malloc(sizeof(LNode));
		p->data = i;
		tail->next = p;
		tail = p;
		i++;
	}
	tail->next = NULL;
	return head;
}

LNode *FindLink(LNode *head, int X)  //查找
{
	assert(head != NULL);
	LNode *chick = head->next;
	while (chick != NULL)
	{
		if (chick->data == X)
			return chick;
		else
			chick = chick->next;
	}
	return NULL;
}

void DeleteLink(LNode *head, int X)  //删除
{
	assert(head != NULL);
	LNode *p;
	LNode *q;
	p = FindLink(head, X);
	q = p->next;
	p->data = q->data;
	p->next = q->next;
	free(q);
}

LNode *inverseLink(LNode *head)
{
	assert(head != NULL);
	LNode *p, *q, *r;
	p = head;
	q = p->next;
	while (q != NULL)
	{
		r = q->next;
		q->next = p;
		p = q; 
		q = r;
	}
	head->next = NULL;
	head = p;
	return head;
}

int main()
{
	LNode *head = CreateLink(5);
	head=inverseLink(head);  // 这里要对head重新进行写,函数里面对head并不保存。

	system("pause");
	return 0;
}



ArcMap对遥感图像进行语义分割标注 使用arcmap对遥感图像进行语义分割标注 阅读详情

相关推荐

黑科技已上线|Lazada数据分析软件,一键式搞定你的店铺!

工欲利其事,必先利其器。在lazada跨境电商的整个流程中,适当的使用一些工具,不仅能大大的简化工作流程,而且可以提高实施效率。Mengla专为lazada电商卖家行业精细化分析lazada数据分析软件都有哪些强大功能! 一、两大优势: 1.海量数据: 数据覆盖面积大;数据分析维度逛;精确算法抓取海量数据;亿万数据秒级响应多种数据来源; 2.技术成熟: 深耕SaaS大数据挖掘;提供一站式数据分析服务;拥有领先的采集技术和运算模型架构; 二、Lazada数据分析软件的功能: 1.各国站点一键分析: 马来西亚

Menglakeji的博客 1146

面试题(c语言)链表的创建,链表打印,链表倒序等

面试题(链表) 住:链表在一些公司的笔试中很容易出现的知识点 1.创建一个备用的结构体: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> #define LEN sizeof(struct NodeLink) struct NodeLink{ //链表结构 int id; float score; struct NodeLink* nex

yanw1234的博客 355

篮球比赛24秒计时器改造指南:用Multisim实现可调式倒计时系统

本文详细介绍了如何使用Multisim软件改造篮球比赛24秒计时器,实现可调式倒计时系统。从脉冲信号发生器到声光报警模块,提供了完整的电路设计方案和调试技巧,帮助开发者快速掌握数字电路设计的核心原理,提升体育电子设备开发效率。

wood5的博客 211

C/C++笔试题(11)

 (慧通)1 写出程序把一个链表中的接点顺序倒排typedef struct linknode{int data;struct linknode *next;}node;//将一个链表逆置node *reverse(node *head){node *p,*q,*r;p=head;q=p->next;while(q!=NULL){ r=q->next; q->next=p; p=q; q=

hanlin1985的专栏 3343

因时机器人-灵巧手配置方案(Ubuntu18.04)

因时机器人-灵巧手配置方案(Ubuntu18.04)

CH_monsy的博客 3848

STM32H7 FMC驱动TFT-LCD原理与实战

TFT-LCD并行接口驱动是嵌入式人机交互的基础技术,其核心在于将显示控制器抽象为存储器映射设备,依托硬件时序控制器实现低开销、高确定性刷新。FMC(Flexible Memory Controller)作为STM32H7系列的关键外设,通过地址/数据总线复用、可配置读写时序及Bank分区机制,支持将ILI9341、ST7789等主流LCD控制器挂载为‘慢速异步存储器’,从而替代GPIO模拟8080时序或LTDC+DMA2D方案。该技术显著降低CPU占用率,提升帧率稳定性,适用于工业HMI、实时仪表盘等对响

weixin_32306683的博客 548

四种方式实现从尾到头输出链表[zz]

http://www.e800.com.cn/articles/2011/0802/492531.shtml 转 本文介绍四种方式实现从尾到头输出链表,方法一:借用栈倒序输出链表。方法二:先翻转链表,再顺序输出。方法三:递归实现,一个字妙,两个字很妙,三个字太妙了。方法四:用数组实现。   四种方式实现倒序输出链表   方法一:借用栈倒序输出链表   方法二:先翻

haluomao18的专栏 1006

爬取信用中国里面的行政处罚

result字段名为行政处罚文书号、处罚决定日期、处罚内容、处罚金额、违法事实、处罚机关、公司名称,行政处罚次数。file_path=r'E:\Data analyze\python\行政处罚爬虫/'#路径需要按实际修改。writer = pd.ExcelWriter('统计.xlsx')# 写入Excel文件。src_workbook=file_path+r'行政处罚(名单).xls' #表格名称也要更改。# keyword = input("输入爬取的公司全称必须是全称")

qq_42863025的博客 1674

将链表中的节点顺序倒排序

利用三个额外的节点指针修改链表节点的指向 详细参考Reverse函数 // 倒排链表节点.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include using namespace std; typedef struct node { int data; nod

白话机器学习 2871

从数据集到产品:聊聊Room-to-Room (R2R) 如何影响扫地机器人、AR导航的未来

本文探讨了Room-to-Room (R2R) 数据集如何推动视觉与语言导航(VLN)技术的发展,并重塑扫地机器人和AR导航的未来。通过分析R2R基于Matterport3D的设计及其在真实场景中的应用,揭示了其在提升智能导航精度和自然语言交互能力方面的潜力。文章还讨论了从实验室到产品化的关键技术挑战与解决方案。

weixin_29084231的博客 140

Java SSH框架学习

Java SSH框架学习

私信可回答各种问题~ 1789

有1,2...一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),时间复杂度为O(1)

提示:用数组值作为下标   分析:        对于一般数组的排序显然 O(n) 是无法完成的。       既然题目这样要求,肯定原先的数组有一定的规律,让人们去寻找一种机会。 例如:原始数组:           a = [ 10, 6,9, 5,2, 8,4,7,1,3 ]         如果把它们从小到大排序且应该是          b

aspireone的专栏 1788

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5214

排序算法的c++实现——计数排序

任何比较排序算法的时间复杂度的上限为O(NlogN), 不存在比o(nlgN)更少的比较排序算法。如果想要在时间复杂度上超过O(NlogN)的时间复杂度,肯定需要加入其它条件。计数排序就加入了限制条件,从而使时间复杂度为O(N). 计数排序的核心思想(来自算法导论):计数排序要求待排序的n个元素的大小在[0, k]之间,并且k与n在一个数量级上,即k=O(n).对于每一个输入元素...

weixin_30614587的博客 181

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

求数组中出现次数超过一半的数字

题目描述:数组中有一个数字的个数超过数组长度的一半,请找出这个数字。例如一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}中数字2出现了两次,所以输出2. 算法描述:   解决这道题有几种方法。   (1)对数组进行排序,然后选取数组的中位数即可,但是我们知道排序最好的最好的时间复杂度就是O(nlgn)。   (2)下面两种方法是在O(n)的时间内实现...

aaa520288的博客 209

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

排序算法汇总(C/C++实现)

前言: 本人自接触算法近2年以来,在不断学习中越多地发觉各种算法中的美妙。之所以在这方面过多的投入,主要还是基于自身对高级程序设计的热爱,对数学的沉迷。回想一下,先后也曾参加过ACM大大小小的校级赛、区域赛。没什么惊天动地的奖项,最好的名次也就省三等奖。现在作为第一篇算法总结就拿常见的排序算法以我个人的理解,以及代码实现跟大家简单分享一下(排序算法如果一一罗列的话,不下十种。曾在图书馆的...

weixin_30299539的博客 124

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

常用排序算法(五)选择排序

选择排序 概要 本章介绍排序算法中的选择排序。 目录1. 选择排序介绍2. 选择排序图文说明3. 选择排序的时间复杂度和稳定性4. 选择排序实现4.1 选择排序C实现4.2 选择排序C++实现4.3 选择排序Java实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3597641.html 更多内容:数据结构与算法系列 目录   选择排序介绍 选择...

weixin_34245082的博客 1389

c++常见并且必须记住的问题

一、基础知识 基本语言 1、说一下static关键字的作用 ​2、说一下C++和C的区别 3、说一说c++中四种cast转换 4、请说一下C/C++ 中指针和引用的区别? 5、给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码 6、怎么判断一个数是二的倍数,怎么求一个数中有几个1,说一下你的思路并手写代码 7、请你说一下你理解的c++中的smart pointer四...

LXY的博客 689

选择排序算法流程图_排序算法系列之选择排序(一)

写在前面十大排序算法一直以来都是面试考擦的重点,本文将以简单、易懂的文字来讲清楚十大排序算法之一的选择排序。下面我将从原理、代码、优化、复杂度分析、稳定性分析和应用场景这几个方面来剖析选择排序,读者朋友一看就懂,一写就会。基本原理选择排序突出“选择”二字,实际上就是从待排序数据中“选择”出符合条件的元素按顺序放到序列头部。官方定义是这样的:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存...

weixin_39540744的博客 644

排序算法的c++实现——堆排序

我们利用最大堆可以实现数组从小到大的原址排序,利用最小堆的可以实现对数组从大到小的原址排序。 1 二叉堆的简单介绍: 最大堆与最小堆可以当作通过数组来实现的一个完全二叉树,除了最底层之外其它层都是满的,并且最底层也是从左到右填充的。在最大堆中,父结点的值大于或等于子结点的值;在最小堆中,父结点的值小于或等于子结点的值。 当堆的元素在数组中下标从1开始时,很容易计算出父结点/...

weixin_30296405的博客 167

C++知识问题总结

为什么析构函数一般设置为虚函数 如果基类的析构函数不是虚函数,当创建一个基类指针指向一个派生类对象,当释放此基类指针时,子类的析构函数不会被调用。 class A { public: A() { m_num = 1; cout<<"A构造"<<endl; } ~A() { cout<<"A析构"<<endl; } int m_num; }; class B:

dddgggd的博客 1599

无序整数数组中找第k大的数

方法一:基于快排 1 /* 2 基于区间快排的第K小算法 ,输出a[k-1]即可,O(n*logn);每次只对后半部分递归便可把复杂度降到O(n) 3 主要思路是每次随机在数组中选取一个元素p,利用这个元素将数组分成两部分,比p小的元素在分好的数组左边,p和比p大的元素在数组右边, 4 根据k值选择在数组左半或者右半部分继续递归执行查找。 5 */ 6 #includ...

weixin_30591551的博客 125

C++经典排序算法总结

转载自https://www.cnblogs.com/fnlingnzb-learner/p/9374732.html 一、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间...

Alexander的博客 307
上一篇: C/C++ | 26-17 已知一个单向链表的头,删除其某一个结点的算法
下一篇: C/C++ | 27-19 写出程序把一个链表中的接点顺序倒排
Airuf
博客等级 码龄10年 3粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值