冒泡和选择排序

Java实现选择排序和冒泡排序 1 问题描述 给定一个可排序的n元素序列(例如,数字、字符和字符串),将它们按照非降序方式重新排列。 2 解决方案 2.1 选择排序原理简介 选择排序开始的时候,我们从第一个元素开始扫描整个列表,找到它的最小元素,然后和第一个元素交换,将最小元素和第一个元素交换位置;然后,我们从第二个元素开始扫描剩下的n-1个元素,找到这n-1个元素中的最小元素,将最小元素和第二个元素交换位置;然后从第三个元素开... 阅读详情
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//冒泡排序
void bubbleSort(int *a,int len)
{
     int i,j,temp;
     for(i = 0;i<len-1;i++)
     {
          for(j=0;j<len -i-1;j++)
          {
               if(a[j]>a[j+1])
               {
                   temp=a[j];
                   a[j]=a[j+1];
                   a[j+1]=temp;
               }
         }
    }
}
//选择排序
void selectSort(int *a,int len)
{
     int i,j,temp,result;
     for(i=0;i<len-1 ;i++)
     {
          temp=i;
          for(j=i+1;j<len-1;j++)
          {
                if(a[j]<a[temp])
                {
                       temp=j;
                }
         }
         if(temp!=i)
          {
               result=a[i];
               a[i]=a[temp];
               a[temp]=result;
          } 
     }
}

void print(int *a,int len)
{
    int i=0;
    for(i=0;i<len;i++)
    {
        printf("%d ",a[i]);
    }
    printf("/n");
}


int main()
{
    int value[10]={38,6,14,9,7,33,67,12,34,51};
    printf("bubbleSort result:/n");
    bubbleSort(value,10);
    print(value,10);
    printf("bubbleSort result:/n");
    selectSort(value,10);
    print(value,10);
    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

bubbleSort (冒泡排序)

bubbleSort (冒泡排序)   void BubbleSort(int *a, int len)  {   int dwCount,i,j,temp;   for (dwCount=0;dwCount  {    for (i=len-1;i>dwCount;i--)//不断比较和交换相邻的两个数    {     if (a[i]    {

darkbus111的专栏 538

格(Lattice)基础(一)

有关格的基础概念,和相关的格难题

Amire0x的小乐园 5701

八种基本排序及其时间复杂度

排序的例子(步骤)是方便理解用的,与程序无关,程序自动生成n个随机数排序并输出运算时间,如想输出排序后的数,请自行更改 1.冒泡排序 将相邻的两个数两两比较,每次外循环都将最大的数移到最后,每次内循环比较两个数,如果后一个数小于前一个数,两个数交换。 15 6 3422 8 12 30 6 15 228 12 30 34 6 158 12 2230 3...

yang03_26的博客 3万+

阿里云一键登录Java后端实战:5分钟搞定号码认证服务集成(附完整代码)

本文详细介绍了如何在Java后端项目中快速集成阿里云号码认证服务(PNVS),实现高效、安全的一键登录功能。文章从核心架构、安全机制解析入手,提供了完整的Maven依赖配置、服务端环境准备、核心业务逻辑实现(包括Token验证、用户处理、异常降级)以及生产环境下的性能优化、监控与部署方案,并附有可直接使用的完整代码示例。

p1q2r的博客 849

别再死记硬背了!用MaxDEA软件实操SBM、DDF、NDDF模型,手把手教你测算绿色全要素生产率

本文深度解析如何使用MaxDEA软件实操SBM、DDF、NDDF模型,手把手教你测算绿色全要素生产率(GTFP)。通过详细的模型选择对比、数据准备策略和MaxDEA操作流程,帮助研究者科学构建指标体系并准确解读结果,提升环境管理研究的实证分析能力。

weixin_28731231的博客 316

直接排序

/* 直接排序 Time:2017.2.28 Name:LQS */ #include #include void insort(int s[],int n)  //自定义函数 {     int i,j;     for(i=2;i     {         s[0]=s[i];          //给监视哨赋值         j=i-1;        

LQS的博客 385

InSAR_ISCE软件数据处理流程之:利用哨兵数据获取2015年尼泊尔地震同震形变场

ISCE软件数据处理流程之:利用哨兵数据获取2015年尼泊尔地震同震形变场 ISCE软件做干涉只需要将数据准备好,并配置好insarApp.xml文件即可进行。 一、数据准备 1、SAR数据获取 本利中使用的数据为欧空局提供的sentinel-1A/B数据,可从阿拉斯加数据服务器上下载,具体下载方法可参考: 哨兵数据下载方法. 2、哨兵卫星轨道文件下载 哨兵数据处理除了需要SAR影像外,还需提供轨道参数文件,可从https://qc.sentinel1.eo.esa.int/aux_poeorb/下载。下载

weixin_42128764的博客 1万+

基础的几种排序算法

1.冒泡排序 #include <stdio.h> #include<stdlib.h> #include<time.h> int main() { int nums[10]; srand(time(NULL)); for (int i = 0; i < 10; ++i) { nums[i] = rand() % 100; } for (int i = 0; i < 9; ++i) {//这里表示需要交换

weixin_45959515的博客 308

新手必看:电路设计里的‘地’到底怎么接?单点、多点、混合接地保姆级图解

本文深入解析电路设计中的接地技术,涵盖单点、多点和混合接地的原理与应用。通过详细的图解和实战案例,帮助新手理解接地在提供参考电位、构成电流回路及抑制电磁干扰中的关键作用,避免常见设计误区,提升电路稳定性与抗干扰能力。

weixin_28455801的博客 301

STM32 BOOTLOADER配置以及APP跳转实现(裸机)

Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。APP就是我们的应用程序,经过硬件引导程序之后跳转到系统程序运行。

吻等离子的博客 3358

冒泡排序和选择排序

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

weifeng blog 3万+

STM32CubeMX之定时器输入捕获

上一章介绍了STM32定时器的PWM输出功能,定时器的几个通道除了有输出功能外,还可以做输入用,可捕获信号的上升沿或下降沿,可以用于测量信号的频率、周期、占空比等。本篇文章将介绍用STM3...

zhang062061的专栏 1349

冒泡排序与选择排序

一.冒泡排序 1.概念 冒泡排序这种排序方法其实关键词就在于冒泡两个字,顾名思义就是数字不断比较然后最大的突出来,也就是说把相邻的两个数字两两比较,当一个数字大于右侧相邻的数字时,交换他们的位置,当一个数字和他右侧的数字小于或等于的时候,不交换。 2.图解 关于冒泡排序我自己画了一幅图来描述他的一轮过程 这里我举了五个无序的数{7,3,6,5,4} 由此可看出他不断与右侧相邻的数字进行比较,当他大于右边的数字就交换,否则不交换,就用这种方法不断进行排序进行很多轮,最后得出一个有序的序列...

weixin_64448174的博客 9554

4D毫米波雷达:高度信息与微多普勒效应

4D毫米波雷达:高度信息与微多普勒效应​ ,人工智能,计算机视觉,大模型,AI,本文深入解析4D毫米波雷达的高度信息获取与微多普勒效应。4D毫米波雷达通过MIMO技术、垂直天线布局及相位差计算等获取高度信息,相较传统雷达更精准。微多普勒效应由目标微运动引发,可用于目标识别、分类和运动监测。文中结合自动驾驶、安防监控案例,分析技术挑战与未来趋势,如信号干扰、数据处理复杂,未来将向高精度、与其他传感器融合发展,展现出在多领域的巨大应用潜力。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 9万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

冒泡排序和选择排序区别

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

技术分子博客 3502

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

运维狗的备忘录 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

weixin_44889894的博客 1286

直接选择排序和冒泡排序

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

qq_45896330的博客 1万+

选择排序和冒泡排序

选择排序和冒泡排序是数组排序中最常见的两种排序方法,以下用两个例子讲述这两种排序。 选择排序 假设有一个长度为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

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

冒泡排序 冒泡排序的基本概念:冒泡排序类似于水中冒泡,较大的数沉下去,较小的慢慢冒起来,假设从小到大,较大的数慢慢往后排较小的数慢慢往前排 (冒泡排序其实就是每一次循环遍历,将一个最大的数一到序列末尾) 算法描述: 1.比较相邻的元素,如果前一个比后一个大,则进行位置交换。 2.第一轮排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到...

summer_e的博客 4284

C语言冒泡排序和选择排序

一、冒泡排序法 假设从小到大排序,例一数组:int arr[] = {2,1,34,5}。 arr[0]元素先跟相邻的arr[1]元素相比,如果比它大则交换两个元素,大的数值放在后面。然后比较arr[1]和arr[2]的大小,以此类推,直至第n-2个和第n-1个元素(n为数组大小)进行比较为止。此时找出了数组中最大的元素放在了最后一位,完成第一次冒泡排序。 第二次排序对数组的前n-1个元素进行冒泡排序, 第三次排序对数组的前n-2个元素进行冒泡排序......以此类推,直至数组前两个元素比较完为止。

hello 7398

常见排序算法——冒泡排序和选择排序

选择排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。

java小豪的博客 5412
上一篇: 快速排序
下一篇: 考场安排---图的着色原理之运用
normalnotebook
博客等级 码龄24年 647粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值