给定0~N之间的N个数字(大于等于0,小于N,不重复)进行按小到大排列(不用其它的经典排序算法)
1 问题
比如我们给定0~N之间的N个数字(大于等于0,小于N,并且不重复)进行按小到大排列,比如N是5,我们给定数据{3, 2, 1, 0, 4},我们按照从小到大的排名最后就是{0, 1, 2, 3, 4}
2 思路
我们遍历数组,下标为i,我们把i和a[i]进行对比,如果不想等我们就进行交换a[i]和a[a[i]]的值,我们知道题目要求是0~N,所以a[a[i]]不会下标越界.如果发现i和a[i]相等,我们再把++i
3 代码实现
1 #include <iostream>2 #include <stdlib.h>3 using namespace std;4 5 6 void permutation(int *a, int length)7 {8 if (a == NULL || length <= 0)9 {10 return;11 }12 int count = 0;13 for (int i = 0; i < length; ++i)14 {15 while (a[i] != i)16 {17 int temp = a[a[i]];18 a[a[i]] = a[i];19 a[i] = temp;20 }21 }22 }23 24 25 int main()26 {27 int a[6] = {3, 1, 2, 0, 5, 4};28 int s
给定0~N之间的N个数字(大于等于0,小于N,不重复)进行按小到大排列(不用其它的经典排序算法)相关推荐
- Python模拟轮盘抽奖游戏 轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的, 如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0.3)之间,代表2等奖, 如果范围
.模拟轮盘抽奖游戏 轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的, 如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0.3)之间,代表2等奖, 如果范围在[0, ...
- java 3 9 2 6数字排序_GitHub - JourWon/sort-algorithm: 史上最全经典排序算法总结(Java实现)...
史上最全经典排序算法总结(Java实现) 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗, ...
- Python之有趣的小程序——猜数字2.0
目录 前言 一.前景回顾 二.思路讲解 三.猜数字2.0介绍 四.猜数字2.0源程序 五.程序讲解 1.基础部分 (1)while循环与for循环 (2)数值大小判断 2.再来一局 总结 前言 让大家 ...
- 7、猜数游戏。预设一个0~9之间的整数,让用户猜一猜并输入所猜的数,如果大于预设的数,显示“太大”;小于预设的数,显示“太小”,如此循环,直至猜中该数,显示“恭喜 你猜中了”
a=6;b=0 print("欢迎来到猜数游戏") while a<b or a>b:b=int(input("请在0~9之间参一个数:"))if ...
- Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入
*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数.对于不正确的输入数字,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目概述 *4.11 ...
- 0~100之间所有数字的累计求和结果.python
#计算0~100之间所有数字的累计求和结果 #0.定义最终结果的变量 result = 0 #1.定义一个整数的变量记录循环的次数 i = 0 #2.开始循环 while i <= 100: r ...
- 给定n个整数(0-100),其中0可以替换成任意其他数字,如数组{98,99,100,1,2,3} 视为连续,要求判断这n个整数是否连续?
该题目为某IT公司的笔试题目 题目: 给定n个整数(0-100),其中0可以替换成任意其他数字,如数组{98,99,100,1,2,3} 视为连续,要求判断这n个整数是否连续?若是连续数组,返回tru ...
- 5.练习:猜数字:随机生成[0,100]之间的随机数,让用户猜生成的数字,显示猜大了还是猜小了,如果猜对了,提示共猜了多少次???
5.练习:猜数字:随机生成[0,100]之间的随机数,让用户猜生成的数字,显示猜大了还是猜小了,如果猜对了,提示共猜了多少次??? 学习:第7遍 1.随机生成[0,100]之间的随机数 让用户猜生成的 ...
- 算法——0~1之间浮点实数的二进制表示
问题描述 0~1之间浮点实数的二进制表示 1.给定一个介于0和1之间的实数,(如0.625),类型为double 打印它的二级制表示(0.101), 因为小数点后的二进制分别表示0.5,0.25,0. ...
最新文章
- Day 13 Python 一之helloworld
- C++ Traits技术
- 函数----MoveWindow
- Erlang之父Joe Armstrong去世
- hadoop学习笔记(五):java api 操作hdfs
- 网络控制系统分析与设计——时延问题的网络控制系统建模
- HDU 1395 2^x mod n = 1 暴力取模
- uniapp中使用阿里云视频点播功能
- jquery-question
- 运维工程师主要做什么_弱电工程IT运维工作到底是做什么的?
- 优秀简历只需一篇就能打天下
- Word文档保存方式谈(转)
- 北京车牌那么难摇为什么还能那么受欢迎?
- wangeditor设置字体_自定义颜色、字体、字号
- 必不可少的数学基础-数列的柯西收敛准则
- 折价买分级基金的教程
- C语言指针难吗?纸老虎而已,纯干货讲解
- php 仿 js encodeURI
- WMS仓库管理系统---(18)盘点管理初盘单移动盘点
- 在Windows2008 R2 服务器上使用maven私有仓库
热门文章
- WPF DataGrid 如何将被选中行带到视野中
- .NET跨平台实践:.NetCore、.Net5/6 Linux守护进程设计
- Asp.NET Core 中如何加密 Configuration ?
- [Abp 源码分析]ASP.NET Core 集成
- Entity Framework Core 5中实现批量更新、删除
- 《Unit Testing》2.1 伦敦学派如何做隔离
- Sql Server之旅——第七站 复合索引和include索引到底有多大区别?
- dotnet core 通过 frp 发布自己的网站
- 自定义构建基于.net core 的基础镜像
- 从“梁漱溟:思考问题有八层境界”所联想到的