选择和冒泡排序

Java实现选择排序和冒泡排序 1 问题描述 给定一个可排序的n元素序列(例如,数字、字符和字符串),将它们按照非降序方式重新排列。 2 解决方案 2.1 选择排序原理简介 选择排序开始的时候,我们从第一个元素开始扫描整个列表,找到它的最小元素,然后和第一个元素交换,将最小元素和第一个元素交换位置;然后,我们从第二个元素开始扫描剩下的n-1个元素,找到这n-1个元素中的最小元素,将最小元素和第二个元素交换位置;然后从第三个元素开... 阅读详情
#include <stdio.h>

void swap(int *a,int *b)
{
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;

}

void bubble(int *a,int len)
{
	int i,j;
	for(i = 0; i < len; i++)
	{
		for(j = i + 1; j < len; j++)
		{
		    if(a[i] < a[j])
			{
			    swap(&a[j],&a[j + 1]);
			}
		}
	}
}

void select(int *a,int len)
{
	int i,j;
	for(i = 0; i < len-1; i++)
	{
	    for(j = 0; j < len - 1 - i; j++)
		{
		    if(a[i])
		}
	}
}

int main()
{
	int a[20] = {0};
	int len = 0;

    pritf("Please input a string:");
    scanf("%s",a);
	len = strlen(a);
	bubble(a,len);
	printf("%s",a);

	return 0;
}

冒泡排序与选择排序比较 排序算法可分为两大类: 比较类排序: 通过比较来决定元素间的相对次数,由于其时间复杂度不能突破O ( nlog(n) ),因此也称为非线性时间比较类排序。 非比较类排序: 不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 算法复杂度: 相关概念: 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的. 阅读详情

相关推荐

使用JAVA进行冒泡排序,选择排序

目录 使用JAVA自带的数组工具类进行排序 冒泡排序 选择排序 使用JAVA自带的数组工具类进行排序 从小到大输出: //JAVA中自带的数据工具包 import java.util.Arrays; public class 排序 { public static void main(String[] args) { //静态齿初始化一个一维数组 int[] array = {1,2,77,34,5,999,7,8,399};

weixin_52008431的博客 1689

C语言中swap函数的使用注意事项

这里是因为如上的交换我们只改变了在swap函数里的值,也就是只改变了形参,待其回到main即会复原,所以我们需要用指针把两个int的地址传过去,如下。大多初学者使用时都会犯这样的错误,那么为什么输出来的两次中a,b的值并没有发生交换呢。以上两种方法即可帮助我们成功交换两个值。

m0_73770225的博客 1427

pcb印刷电路缺陷检测----数据集准备

PKU-Market-PCB 印刷电路板 (PCB) 瑕疵数据集是一个公共合成 PCB 数据集,包含 1,386 张图像,具有 6 种缺陷(漏孔、鼠咬、开路、短路、杂散、杂铜),可用于图像检测、分类和配准任务。

qq_30190551的博客 4433

c语言中swap问题小结

swap:实现交换的话,得传地址过去进行交换     #include     #include     void swap1(int x,int y)     {     int temp;     temp=x;     x=y;     y=temp;     }     void swap2(int *x,int *y)     {     int *temp;

faith学习园 1275

C#操作SQLite数据库帮助类——SQLiteHelper

using System; using System.Collections.Generic; using System.Data.SQLite; using System.Data; namespace Com.ZCWL.Rock.Helper { public class SQLiteHelper { private static string connectionString =

跟健哥出去走走 2万+

手把手教你用X-AnyLabeling实现医学图像标注:从SAM模型选择到多边形优化全流程

本文详细介绍了如何使用X-AnyLabeling平台结合Med-SAM等专业模型实现医学图像的高效标注。从环境配置、模型部署到实战工作流,涵盖智能辅助标注、低对比度解决方案及团队协作方案,帮助医疗从业者大幅提升标注效率与质量。特别适合处理CT/MRI等医学影像的复杂标注需求。

weixin_29251131的博客 457

C数据交换

C指针实现数据交换

物联网IOT 1122

gesp c++ 五级知识点

gesp c++ 五级知识点

MMD.然大大 2009

冒泡排序和选择排序

一、冒泡排序 冒泡排序(Bubble Sort):是一种较简单的排序算法。 二、算法描述: ①、 比较相邻的元素 : 如果第一个元素比第二个元素大,那么就交换他们两个。 ②、从 第一对相邻的元素 开始比较 直到 最后一对,这样在最后的元素应该会是最大的数。 ③、 针对所有的元素(除了最后一个)重复以上的步骤。 重复步骤 1~3 ,直到没有任何一对数字需要比较。 三、名字由来: 因为越小的元素会经由交换 慢慢 “浮” 到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒

weifeng blog 3万+

从零到一:手把手教你用SAM-BA工具完成嵌入式系统烧录

本文详细介绍了如何使用SAM-BA工具完成嵌入式系统烧录的全过程,包括环境搭建、硬件连接、Bootloader烧录以及完整系统镜像的烧录步骤。针对常见问题提供了实用的排查指南,并分享了批量烧录和自定义脚本的高级技巧,帮助开发者高效完成嵌入式系统开发。

weixin_42523792的博客 382

【Niagara Vykon N4 】物联网学习 03照明控制及照明时间表

3.1 设计思路 3.2逻辑组件添加 ①依据原有控制照明逻辑,打开palette,找到schedule模块,添加BoolenSchedule。 ②打开kitContrl,找到Util,并添加BoolenSwitch。 ③剪切到原有的逻辑线,并进行逻辑连接,如下图。 ④新建BooleanWritable,命名为Switch,设置参数并进行逻辑连接,若下图。 3.3界面设计 ⑤至此完成了逻辑的设...

weixin_45217107的博客 2863

冒泡排序和选择排序区别

冒泡排序和选择排序区别 1.稳定性 冒泡排序稳定排序。(例如 1,2,3,2,4 排完序后两个2,2 先后顺序不变) 选择排序不稳定排序。 2.都属于比较排序,交换成本不同。 冒泡排序需要相邻元素比较,如果当前元素大于后一个元素进行交换。 选择排序,先选择后交换,减少交换次数。 import java.util.Arrays; /** * @program:tpb * @description:冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个,稳定排序 ...

技术分子博客 3502

从选型到阵列:基于ESP32-S3的智能硬件麦克风系统设计实战

本文详细介绍了基于ESP32-S3芯片设计智能硬件麦克风阵列的完整实战方案。从核心芯片选型、数字MEMS麦克风的参数解读与电路设计,到关键的声学结构密封、阵列布局策略,再到利用ESP-ADF框架构建音频处理流水线并集成回声消除、噪声抑制等算法,提供了从硬件到软件的全链路设计指南与避坑要点,旨在实现清晰、稳定的远场语音交互。

weixin_29173777的博客 268

直接选择排序和冒泡排序

直接选择排序 直接选择排序是一种简单的排序算法。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 代码实现: import java.util.Arrays; public class SortTest { public static void main(String[] args) { // 定义需要升序排序的数组arr int [] arr={8

qq_45896330的博客 1万+

GEE去云处理代码段解读(位运算)

GEE去云处理代码段解读,包含位运算符号解读、bitwiseAnd()函数、eq()函数解读

jiekeheiguanglan的博客 2068

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

选择排序和冒泡排序

选择排序和冒泡排序是数组排序中最常见的两种排序方法,以下用两个例子讲述这两种排序。 选择排序 假设有一个长度为5的数组,数组中有5个元素,要将这5个元素从小到大排序: int a[5]={3,5,2,8,1}; /* a[0]==3 a[1]==5 a[2]==2 a[3]==8 a[4]==1 */ 然后再定义一个变量min来存放数组的下标: int min; 第一步(第一趟比较) 从第0个元素开始比较,也就是从a[0]开始比较,假设最小值就是a[0],那么就将a[0]的下标存放到mi

weixin_51195895的博客 1477

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

冒泡排序和选择排序的区别

一: 区别 1.冒泡排序是比较相邻位置的两个数,而选择排序是按顺序比较,找最大值或者最小值; 2.冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置; 3.冒泡排序是通过数去找位置,选择排序是给定位置去找数; 二: 冒泡排序优缺点 1.优点:比较简单,空间复杂度较低,是稳定的; 2.缺点:时间复杂度太高,效率慢; 三: 选择排序优缺点 1.优点:一轮比较只需要换一次位置; 2.缺点:效率慢,不稳定(举个例子5,8,5,...

weixin_58078092的博客 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java排序之冒泡排序和选择排序

冒泡排序代码及思想 1,冒泡排序 1,冒泡排序思想 1. 第一轮:将第一个元素与第二个元素进行比较,选出较大元素,若第一个元素大,交换第一个元素跟第二个元素的位置,然后用较大元素与第三个元素进行比较,再选出较大元素,依次往后,将最大的元素放在最后一个位置,即是数组中的最大元素,比较的次数为arr.length-1 2. 第二轮:与前面类似,将除了最大元素,剩下的元素进行比较,选出第二大元素,放在最后第二个位置,比较的次数为arr.length-2 3. 第i轮:比较的次数为arr.length-i

weixin_44889894的博客 1286

冒泡排序和选择排序的不同

排序是计算机程序中的主要任务之一,数组的元素按特定顺序排列。排序使搜索更容易。冒泡排序和选择排序是排序算法,可以通过它们使用的排序方法加以区分。冒泡排序本质上是交换元素,而选择排序通过选择元素来执行排序。     二者的另一个显著区别是冒泡排序是一种稳定的算法,而选择排序是一种不稳定的算法。稳定的意思是,在列表或数组排序前后,具有相同值的记录以相同的顺序出现。一般来说,大多数稳定快速的算法都使用额外的内存。

运维狗的备忘录 1万+
上一篇: 完数
下一篇: 字符串中连续最长的数字字符串
eigooo
博客等级 码龄10年 6粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值