冒泡排序

双向冒泡排序 冒泡排序 性能对比 双向冒泡排序 冒泡排序 性能对比 数据结构与算法与语言无关,此篇博文用的描述语言是go 冒泡排序 冒泡排序的时间复杂度是O(n2) 先看一个简单的冒泡排序 //普通冒泡排序 func normalBubbleSort(sequence []int){ for i := 0;i < len(sequence) - 1;i++ { for j := 0;... 阅读详情

冒泡排序

package com.athome.sorting;
import java.util.*;

public class Sort {
	   public static void main(String[] args){
		   int[] arr = {13,9,8,25,98,63,5,0};
		   System.out.println("before: "+Arrays.toString(arr));
		   
		   for(int i = 0;i < arr.length ;i++){
			   for(int j = 0 ;j<arr.length-i-1;j++) {
				   if (arr[j] > arr[j+1]) {
					   int temp = arr[j];
					   arr[j] = arr[j+1];
					   arr[j+1] = temp;
				   	}  
			   	}
		   }
		   
		   System.out.println("after: "+Arrays.toString(arr));
	   }
}



运行结果
在这里插入图片描述

冒泡排序与链表的冒泡排序 首先看一看简单的冒泡排序是如何实现的: #include <stdio.h> int main() { int a[100],n; printf("请输入数组元素个数:\n"); scanf("%d",&n); printf("请输入数组元素:\n"); for(int k=0;k<n;k++) scanf("%d",&a[k]); /*冒泡排序*/ for(int i=0;i<(n-1);i++) //对于n个数,只需进行n-1次循环排序 f 阅读详情

相关推荐

单链表冒泡排序与数组冒泡排序

冒泡排序冒泡排序是最基本也是最简单的一种排序,但是复杂度高不适合大数据的排序, 但是对于我们学习排序还是很有帮助的。冒泡排序的思想就是每遍历一次就选出最大值或最小值,类似水中的水泡一样,越到水面泡越大。 下面的链表基于这种定义:http://blog.csdn.net/dawn_after_dark/article/details/73610674形式一冒泡排序其实有好几种变形,原始的思想就是每一

dawn_after_dark的博客 1892

数据结构——图(Graph)

数据结构——图(Graph) 目录 1.图的基本概念 2.图的基本代码操作 3.图的进阶操作和应用 1.1 图的定义 任何一个图都是由顶点和边构成的。我们采用集合的思想,可以把任何一个图用两个集合表示出来:记作G=(V,E)G = (V,E)G=(V,E),其中V是表示顶点的有限集合,E为边的有限集合。 允许E为空集,此时表示的含义是:图G只有顶点但是不存在边。 1.2 图的相关术语 1. 有向图和无向图 我们举一个例子来理解: 题目描述: 某省政府进行"畅通工程",现在给出每两个城市之间的道路和道路

weixin_45671402的博客 3744

弗洛伊德算法

弗洛伊德算法 #include "stdio.h" #include "iostream.h" #include "stdlib.h" #include <iostream> #define INFINITY 32767//int型的最大值为∞ #define MAX_VEX_NUM 30//最大顶点个数 typedef struct{ char vexs[MAX_VEX_NUM+1];//顶点信息 int arcs[MAX_VEX_NUM+1][MAX_VEX_NUM+1];//邻接矩阵存放权值 int vexnum,arcnum;//顶点数,弧(边)数 }AdjGraph; int CenterVex(AdjGraph *g);//带权图的邻接矩阵建立 AdjGraph *CreateAdjGrahp();//Floyd算法 void main() { int k; AdjGraph *g; g=CreateAdjGrahp(); k=CenterVex(g); cout<<"中心顶点为:"<<g->vexs[k]<<endl; } ////////////////邻接矩阵的建立//////////////// AdjGraph *CreateAdjGrahp() { AdjGraph *g; g=new AdjGraph; int i,j,k,x; cout<<"Input vexnum and arcnum(格式如:顶点数 边数<Enter>):"<<endl; scanf("%d%d",&g->vexnum,&g->arcnum);//读入顶点个数和边数 cout<<"输入顶点信息:(如:abcde<Enter>)"<<endl; scanf("%c",&g->vexs[1]); for(i=1;i<=g->vexnum;i++) scanf("%c",&g->vexs[i]);//读入顶点信息 for(i=1;i<=g->vexnum;i++) for(j=1;j<=g->vexnum;j++) g->arcs[i][j]=INFINITY;//初始化邻接矩阵 cout<<"顶点<->序号"<<endl; for(k=1;k<=g->vexnum;k++) { printf("L<->%d",g->vexs[k],k); cout<<endl; } cout<<"输入每条边对应的两个顶点的序号及权值,格式为:"<<endl <<"i j x<Enter>"<<endl; for(k=1;k<=g->arcnum;k++) { scanf("%d%d%d",&i,&j,&x);//输入边信息,建立邻接矩阵 g->arcs[i][j]=x; } return g; }//CreateGraph

图算法入门1:基础表示方法和深度优先搜索实现

图结构表示和深度优先访问算法实现

fangfanglovezhou的博客 530

希尔排序

希尔排序 package com.athome.sorting; import java.util.*; public class Sort { public static void main(String[] args){ int[] arr = {13,9,8,25,98,63,5,0}; System.out.println("before: "+Arrays.toString(arr)); int d = (arr.length)/2; while(

AdjGraph的博客 246

数据结构——图(Graph)

简单描述图的基本概念和基础算法,做笔记方便自己复习而已

Traibin的博客 2278

实验:图的创建

6-1 jmu-ds-邻接矩阵实现图的操作集 ( 30分) 关键代码 1 void CreateMGraph(MGraph& g, int n, int e) 2 { 3 int i, j; 4 g.n = n; 5 g.e = e; 6 for (i = 1;i < MAXV;i++) 7 ...

weixin_30809173的博客 888

C语言冒泡排序

冒泡排序?不难,这篇就够了! for(int i=0;i

小S的博客 9万+

冒泡排序和双向冒泡排序算法

冒泡排序算法应该算是每个开发者入门必学的基础算法,它逻辑清晰简单,代码实现也并不复杂,这里用自己的话语来总结一下。 (这些为了方便随便打开了一个node项目写的,其他Java ,PHP,C等也是一样的道理,算法讲究的只是一个思维模式,知道怎么去实现就行,不要死抠语言) 先说简单的普通冒泡排序冒泡排序既然是一个排序算法,那么它就一定是有一个循环排序的过程,其实它的原理很简单,就是两层for循环嵌...

whiteBearClimb的博客 2889

冒泡排序详解

一、冒泡排序介绍 冒泡排序是一种基于比较和交换操作的排序算法。 每轮冒泡的过程都是从第一个元素开始,将该元素和相邻下一个元素进行比较和交换,使得较大的元素向右移动(如果该元素大于下一个元素,则两个元素交换;如果该元素小于等于下一个元素,则保持不变)。这样一来,每轮冒泡的过程都可以确定一个元素放在正确的位置上,而这个元素就是剩余元素中最大的元素,正确的位置就是剩余位置中的最右侧的位置。这个过程就像是...

学而时‘享’之,乐乎 1833

冒泡排序】c++实现冒泡排序代码

冒泡排序】c++实现冒泡排序代码 冒泡排序的基本思想: 冒泡排序的核心是对所有相邻数组元素的值进行比较,如果是逆序(a[i]>a[i+1]),则两者交换,最终达到有序。 步骤: (1)比较第一个数a[0]和第二个数a[1],如果a[0]>a[1],则,两个数组元素的值交换;然后接着比较第二个数a[1]和第三个数a[2],以此类推,直到第n-1个数a[n-1]与第n个数a[n]比较为止。这个过程是第一趟冒泡排序,其结果是将数组中最大的值放到了最后一个位置上。 (2)第二趟冒泡排序,是对前n-1个

qq_39543174的博客 1万+

冒泡排序和双向冒泡排序 —— 前端 js 版

冒泡排序和双向冒泡排序 js版冒泡排序冒泡排序理解冒泡排序实现冒泡排序优化双向冒泡排序双向冒泡代码实现 冒泡排序 冒泡排序理解 冒泡排序是基础的排序算法之一,效率非常低,但作为一名前端开发,掌握它还是必不可少的技能。 冒泡排序是将相邻两个元素进行比较,根据条件进行调换位置达到排序的目的。 冒泡排序实现 本例最大的数字放在了最右边,则下次遍历可少比较一次最右边的,本次需比较的次数:数组最大索引值 - 1(因为要比较 j + 1, j + 1 需小于等于数组最大索引值)- 遍历的次数 在力扣上通过排序测试时间

hulingyua的博客 1387

java冒泡排序和双向冒泡排序算法

java实现冒泡排序 一、冒泡排序: 利用冒泡排序对数组进行排序 二、基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的)

zhuyue_981025的博客 943

冒泡排序总结

冒泡排序总结算法思想:图片演示代码冒泡排序常规版:冒泡排序优化第一版冒泡排序优化第二版 算法思想: 冒泡排序是一种交换排序。 交换排序就是通过元素按照要求进行两两比较,判断是否符合要求,假如不符合要求就将两个元素交换位置来达到排序的目的。 冒泡排序名字的由来就是因为在交换过程中,类似水冒泡,小(大)的元素经过不断的比较交换由水底慢慢的浮到水的顶端。 冒泡排序的思想就是利用的比较交换,利用循环将第 i 小或者大的元素归位,归位操作利用的是对 n 个元素中相邻的两个进行比较,如果顺序正确就不交换,如果顺序错误就

qq_41825377的博客 2316

冒泡排序java实现

目录一.前提二.冒泡排序定义三.分类1.简单冒泡排序2.冒泡排序3.冒泡排序-优化四.时间复杂度五.空间复杂度六.参考 一.前提 1.为简单起见,讨论从小到大的整数排序 2.只讨论基于比较的排序(< = >有定义) 3.只讨论内部排序 4.稳定性:任意两个相等的数据,排序前后相对位置不发生变化 二.冒泡排序定义 是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,将较大的元素往后放,第一次比较完毕,最大值放在最后,依次这样比较,直到数列没有在需要交换,排序完成。 三.分类 1.相

weixin_41570207的博客 1256

双向冒泡排序

【问题描述】 在冒泡排序中,若待排序序列为正序,至需一趟扫描,而待排序序列为反序时,需进行n-1趟扫描。对于初始序列(94,10,12,18,42,44,67)只需扫描2趟,而对于初始关键字序列(12,18,42,44,67,94,10)就需扫描6趟。造成这种不对成的原因是:每趟扫描仅能使最小数据下沉一个位置,如果改变扫描方向,情况正好相反,即每趟从后往前扫描,都能使当前无序区中最大数据上浮一个位...

weixin_44034024的博客 2305
上一篇: 希尔排序
下一篇: 将信息表csv文件读取成矩阵或数组形式
AdjGraph
博客等级 码龄7年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值