两种冒泡排序的不同写法

关于冒泡排序的写法 Java最常见的面试问题就是冒泡排序,这种排序算法经常考,希望读者能够用到 立即下载

冒泡排序的基本思想:相邻两数进行比较,大的向后移,经过第一轮两两比较和移动,最大的元素移动到了最后,第二轮次大的位于倒数第二个,依次进行。

两种冒泡排序的不同:从左往右比还是从右往左比

两种冒泡排序本质相同

第一种(从左往右):

for(int loop=0;loop<len-1;loop++){
		for(int i=0;i<len-1-loop;i++)
			if(array[i]> array[i+1]){
				int t  = array[i];
				 array[i] = array[i+1];
				 array[i+1] = t;
			}

第二种(从右往左)

for(int segment=0;segment<=len-1;segment++)
{
  for(loop=len-2;loop>segment;loop--)
  {
          if(array[loop]> array[loop+]){
				int t  = array[loop];
				 array[loop] = array[loop+1];
				 array[loop+1] = t;
			 }
  }
}

华为OD机试 - 去除多余空格(Python/JS/C/C++ 2024 E卷 100分) 本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。条件约束:输入为两行字符串:第一行:待去除多余空格的文本,用例保证如果有单引号,则单引号成对出现,且单引号可能有多对。 第二 阅读详情

相关推荐

从FPGA工程师视角看CXP-12:如何用Xilinx GTX/GTH收发器搞定一条50Gbps的工业相机数据流?

本文从FPGA工程师视角详细解析了如何利用Xilinx GTX/GTH收发器实现50Gbps的CXP-12工业相机数据流传输。通过协议分析、硬件设计要点和FPGA逻辑实现,帮助开发者高效构建高带宽工业视觉系统,特别适合4K/8K高分辨率图像处理需求。

weixin_42533622的博客 282

冒泡排序的多种写法、逻辑

冒泡排序的多种写法、逻辑 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) 1 Bubble Sort —— 上推分类法 2 Bubble Sort —— 冒泡排序( - 根据下标) 3 Bubble Sort —— 冒泡排序( - 根据轮数) 4 Bubb...

Chinar优快云的博客 2654

每天一个优秀提示词学习收藏 - 文本去AI化(四)

宝子们,今天不藏私啦!我把这段时间四处搜罗、潜心钻研出来的文本去AI化Prompt 提示词大礼包双手奉上,这可都是能让你的 AI 创作水平原地起飞的干货!走过路过不要错过,赶紧码住,开启你的 AI 创作进阶之旅吧!

2447

冒泡排序及其三种写法

冒泡排序 冒泡排序是入门级的算法,但也有一些有趣的玩法。 通常来说,冒泡排序有三种写法: 一边比较一边向后两两交换,将最大值/最小值冒泡到最后一位; 经过优化的写法:使用一个变量记录当前轮次的比较是否发生过交换, 如果没有发生交换表示已经有序,不再继续排序 进一步优化的写法:除了使用变量记录当前轮次的是否发生交换外, 再使用一个变量记录上一次发生交换的位置,下一轮排序时, 到达上一次交换的位置就停止比较 冒泡排序的第一种写法 private static void bubbleSort

qq_44871613的博客 4675

使用广播星历进行 GPS 卫星位置的计算

目录1.计算卫星运动的平均角速度 n2.计算观测瞬间卫星的近地点角3.计算偏近点角4.计算真近点角 f5.计算升交角距 6.计算摄动改正项7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置9.计算观测瞬间升交点的经度 L10.计算卫星在瞬时地球坐标系中的位置11.计算卫星在协议地球坐标系中的位置使用广播星历进行GPS卫星位置的计算的详细步骤如下:关于在广播星历中各参数的分布情况可以参考下图:首先根据广播星历中给出的参数 计算参考时刻(TOE) 的平均角速度 式中,GM为万有引力常数 G 与地球总质量

qq_43381998的博客 5569

锂电池的充电和放电曲线解读

锂电池充放电曲线是反映其性能的关键指标。充电曲线分为恒流和恒压两阶段:恒流阶段电压快速上升,恒压阶段电流逐渐降低;放电曲线则呈现平台期和快速衰减期特征。这些曲线受温度、充放电倍率及材料体系(如三元锂或磷酸铁锂)显著影响。通过分析曲线特征,可优化电池管理系统,实现精准的SOC估算、快充策略制定及故障诊断,从而在电池性能与安全性间取得平衡。不同应用场景(如新能源汽车或消费电子)对曲线形态有特定要求。

start_up_go的博客 5070

冒泡排序的三种实现方法(逐层优化)和选择法排序

冒泡排序的三种实现方法(逐层优化)和选择法排序

m0_74343467的博客 1220

基于Simulink的双向DC-DC变换器在储能系统中的应用仿真

摘要:本文详细介绍了基于Simulink的双向DC-DC变换器在光伏储能系统中的仿真实现。主要内容包括:1)采用非隔离型双向Buck-Boost拓扑作为储能系统枢纽;2)针对750V直流微网中的20kWh锂电池接口场景进行建模;3)详细阐述双闭环控制器设计(电压外环+电流内环)、工作模式判断逻辑等关键步骤;4)通过仿真验证了系统在功率阶跃和模式切换下的性能。文章提供了完整的建模流程和控制方法,为储能系统接口设计提供了实用参考。

amy_mhd的博客 179

极简理解算法理解 --冒泡排序

题外话 本篇讲解主要是面对冒泡排序的初学者,讲解的时候比较细腻,可能会有点冗长,最后会给出冒泡的关键记忆点,以便在编程时快速实现。 冒泡排序的思想 冒泡排序就是通过每次相邻的两位数进行比较,把较大的数往右边移动一位,每次都比较相邻的两位,直到该行最大的数移动到最右边。用同样的方式继续对该行中第二大,第三大,第 n 大的数进行类似的操作,最终得到由小到大的排序。(由大到小的排序方式与此类似,下面的讲...

码的世界 1112

18-XLINX的XC7A100T的BANK0引脚说明

DXP_0和 DXN_0是纯输入引脚,Xilinx Artix-7 FPGA 内部集成的一个片上监控模数转换器​ 的差分模拟输入对,模数转换器​的模拟信号输入端,将外部的模拟电压​ 采样并转换为内部的数字值,是一个单向的信号采集过程。它是与 VCCADC配对的关键引脚,共同为内部的精密模数转换器提供一个纯净、安静、独立的参考地平面。多FPGA同步配置: 在多FPGA系统中,主FPGA配置完成后,可以拉低从FPGA的 INIT_B使其等待,等所有FPGA都准备好后,再同时释放,实现同步启动。

weixin_44479192的博客 233

Debezium系列之:深入理解 Debezium Topic的设置要求

Debezium系列之:配置 Debezium Topic

zhengzaifeidelushang的博客 1009

排序算法之 - 冒泡排序

冒泡排序 冒泡排序就是重复执行:从最右侧开始,依次比较相邻的两个元素的大小,右侧小于左侧则交换两者的位置,看起来右侧的较小的数就好像渐渐“浮”到左边,以下为示例: 第一轮运行流程及结果(实线为交换,虚线为不交换): 第二轮运行流程及结果: 第三轮运行流程及结果: 第四轮运行流程及结果: 第五轮运行流程及结果: 第六轮运行流程及结果: ...

我希望,快乐,在我走过的地方绽放。。。。 7160

关于如何在matlab中导入并翻译Hypemesh导出的大型刚度矩阵txt文本

如何将它翻译成matlab可以使用的矩阵变量,并参与运算。 由于这个大型刚度矩阵125万x125万≈1e12。matlab甚至其他计算软件无法保存这个大的一个矩阵文件。而这个刚度矩阵作为稀疏矩阵其中非零元素的数目只有有500多万。采用sparse稀疏矩阵技术是可以保存。 这里简单介绍一下这个Hypemesh导出的大型刚度矩阵txt文本。如图DMIG开头的标识符是换行符,后面两列是表示这条非零元素在刚度矩阵中列数的信息。我们已经将左边字母和符号等批量删除,得到了右边textread函数可以...

wenyusuran的专栏 1795

Java 快速排序和冒泡排序

 大家无论是在平常生活,还是跳槽面试的时候都会问到一些算法的问题,自己没事就瞎写瞎看的比较两个算法的速度,数量小的话,两个算法执行时间是没有差别,大数据量存在不同的差异。   package com.netease.dealer.testarithmetic; import com.netease.dealer.util.json.FastjsonUtil; public class Da...

zhaoshen的博客 801

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java排序之冒泡排序

Java排序之冒泡排序冒泡排序 基本思想:比较相邻两个元素的值,如果第一个值大于第二个值,则交换位置。那么一趟扫描下来,最大的值就被排到最后位置,二趟扫描,则第二大的值就被排到倒数第二的位置,三趟扫描…依次,就像冒气泡一样,从小到大冒出。 算法实现写法一 private static void bubbleSort(int[] array) { boolean exchan

x_l_g的博客 409

jre9下载 jdk9

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

冒泡排序、选择排序、插入排序

public class Demo5 { public static void main(String[] args) { int a[]={10,20,88,9,30,50,31,19}; /*Demo5.sort2(a);*/ for (int i : a) { System.out.print(i+","); } System.out...

weixin_30809173的博客 66

数据结构与算法c++实现(2)之冒泡排序

冒泡排序 时间复杂度O(n*n) #include<iostream> using namespace std; //void Bubble(int list[],int n){ // for(int i = n-1; i > 0; --i){ // for(int j = 0;j < i-1; ++j){ // if(list[j] > list[j...

请叫我少爷的博客 227

js数据结构与算法_05_冒泡排序

一、实现冒泡排序 冒泡排序就像鱼儿吐泡泡一样,从小到大,也暗示着排列的顺序是从小到大; 核心思想是依次比较前后位置元素的大小,哪个大哪个就放后面,这样一轮下来,最后一个位置一定是最大的;这里的最后一位不用继续比较了,因为倒数第二位就是与它比较; 比如这是一个要排序的无规则数组: let arr = [4, 8, 1, 9, 6, 7]; 那我们安照上面的来一轮前后比较试试: function demo(array) { let N = array.length; for (let

masierty的博客 380

在冒泡排序中(i,j从0开始)与(i,j从1开始)的区别

【代码】在冒泡排序中(i,j从0开始)与(i,j从1开始)的区别。

ambition20242的博客 227

冒泡排序

public class Test { //待排数组 private static int[] data = {1, 10, 11, 23, 4, 2, 18, 47, 95, 23}; //增强for循环打印数组 private static void print(int[] da

只有变秃 才能变强 423

JS 冒泡排序&&顺序排序

冒泡排序&顺序排序

qq_43636471的博客 240

冒泡排序(Bubble Sort)

常见的排序算法有Bubble Sort、Merge Sort、Quick Sort 等,所有排序算的基本法思想都是把一个无限大的数据规模通过算法一步步缩小,指导最后完成排序。 这里分享一下Buuble Sort算法,php版本的。冒泡排序不适合在待排序的数据集特别大的情况下,这里只是一个简易的demo,待排序的数据在10以内。 冒泡排序算法有2种极端的情况所导致的算法复杂度是不一样的: 所有的数据集都是有序的,则此时通过算法优化可以是算法的复杂度从 O(n^2) 将至 O(n) 所有的数据集都是无序

cherrycmd的专栏 261

c++学习心得(六) 数组(4)冒泡排序法

冒泡排序法 #include <iostream> #include <string> using namespace std; int main() { //冒泡排序 int a[9] = {4,2,8,0,5,7,1,3,9}; //初始化数组 int temp = 0; //用于交换变量值时的中间媒介 for (int i = 8 ; i>0 ; i-- ) //外层循环 { fo

weixin_45315158的博客 285

[冒泡排序]原理介绍&代码解析

对一组数组通过相邻之间的比较,把大的不断往后移实现从小到大的排序方式。

YJH000_的博客 391

冒泡排序BubbleSort(两种写法)

冒泡排序的核心理念是什么?那就是相邻两数比较,前面的数比后面的数小的话,就交换位置,每次循环找到该次排序的最小值,然后放到该次循环数组的队尾,因此便利到最后,留的就是最大的数. 那么在这里说下冒泡排序的两种写法,一种是从前往后遍历,另一种是从后往前遍历,这两种遍历方式代码如下: System.out.println("\n____________________________________...

Reborn_Chang的博客 1万+

冒泡排序的两种写法

int[] array = new int[]{5,1,3,9,4,8,7,0,6,2}; 1.普通的冒泡排序 for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length - i - 1; j++) { if (array[j] > array[j+1]) { ...

冰雪世界 883
上一篇: 统计输入数字的位数(int型)
下一篇: c++练习题——返回数值
星陨云
博客等级 码龄5年 4粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值