-------------------------------
一、冒泡排序
1、前提:
2、关键算法:
int out, in;
for(out=nElems-1; out>1; out--){ // outer loop (backward)
for(in=0; in<out; in++) // inner loop (forward)
if( a[in] > a[in+1] ) // out of order?
swap(in, in+1); // swap them
}
3、优缺点:优点是简单,缺点是慢
4、效率: O(N*N)
--------------------------------------
二、选择排序
1、前提:
2、关键算法:
int out, in, min;
for(out=0; out<nElems-1; out++) // outer loop
{
min = out; // minimum
for(in=out+1; in<nElems; in++) // inner loop
if(a[in] < a[min] ) { // if min greater,
min = in; // we have a new min
}
swap(out, min); // swap them
} // end for(out)
3、优缺点:优化了冒泡的交换操作
4、效率: 比较操作O(N*N),交换操作约N
--------------------------------------
三、插入排序
1、前提:在数据局部是有序的情况下,使用效果好
2、关键算法:
int in, out;
for(out=1; out<nElems; out++) // out is dividing line
{
long temp = a[out]; // remove marked item 取出临时变量
in = out; // start shifts at out
while(in>0 && a[in-1] >= temp) // until one is smaller, 与N-1变量比较,如果N-1大于TEMP,则N-1向后移动一步
{
a[in] = a[in-1]; // shift item to right
--in; // go left one position 改变指针,继续向前比较
}
a[in] = temp; // insert marked item 临时变量新的位置
} // end for
3、优缺点:相对于冒泡优化了比较与交换
4、效率: 最差O(N*N),最好O(N)
--------------------------------------
分享到:
相关推荐
本书的目的是从抽象思维和问题求解的观点提供对数据结构的实用介绍,试图包含有关数据结构、算法分析及其Java实现的所有重要的细节。作者采用了独特的方法将数据结构分成说明和实现两部分,并充分利用了已有的数据...
学习建议:算法和数据结构的内容,用最简单的C语言描述会比较清楚,没有必要使用C++和Java的面向对象描述。面向对象编程在这里没啥用处,反而冲淡了学习主题。初学者,先学习Weiss的《数据结构与算法分析 C语言描述...
此书的算法部分也很精到 比算法导论更容易学习和入门 Sartaj Sahni《数据结构算法与应用 C++语言描述》全集 包含中英文图书 代码 习题答案 演示动画 都是我亲自从此书的官方网站下载并汇总的 绝对权威 算法和数据...
Java 的学习笔记和整理的知识点,包含Java语言基础、Java服务端方向的框架、设计模式、计算机网络、算法、Java 虚拟机和数据库等多个方面的内容。想了解前端的内容参考,Android相关的内容参考。 目录结构 语言基础...
面向对象是先有数据结构,然后再有算法。 在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。 开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能 。 从语法上来...
FrameWork [java] 结构,框架 ['freimwә:k] Generic [java] 泛型 [dʒi'nerik] goto (保留字) 跳转 heap n.堆 [hi:p] implements (关键字) 实现 ['implimәnt] import (关键字) 引入(进口,输入) Info n.信息 ...
数据结构 稀疏数组 二维数组 转 稀疏数组的思路 遍历 原始的二维数组,得到有效数据的个数 sum 根据sum 就可以创建 稀疏数组 sparseArr int[sum + 1] [3] 将二维数组的有效数据数据存入到 稀疏数组 稀疏数组转原始的...
算法与数据结构 设计模式 程序 C ++ 书 cmake STL 基础 多线程 泛型编程 测试 网络编程 配置 吉特 高朗 Java 虚拟机 资源 分片球 弹簧 springcloudGateway 专栏 分散事务 基础 工具类 并发编程 [Java多...
求第30位数是多少, 用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i ) return 0; else if(i > 0 &&...
语言相关的API,第三方库和计算机基础理论等知识的学习和整理 更多 : | | 目录 资源 详细目录 Java语言和JDK源码 Java语言的基础理论知识 并发编程 Java并发编程相关的内容,并发包源码分析等 集合框架 Java集合框架...
算法与数据结构 / 操作系统 / 数据库 / 计算机系统 / 网络 / 中间件 / Java / 软件工程 / 前端 / 运维 / 网络安全 本知识框架大部分内容都是前期建立框架大纲,后期不断完善细节,呈一个螺旋上升的结构,如果发现...
本代码仓库是我学习“算法与数据结构”的过程中,对于一些经典算法和数据结构的实现,同时我还写了 Java 版本。 文章标题 文章链接 Python 代码链接 Java 代码链接 【算法日积月累】0-写在前面的话 第 1 部分:排序...
java简单贪吃蛇源码学习随笔 机器学习 ...数据结构 序表 栈 雷 线性表的链式保存 字符串 实验室暑假课设验收 实验课 二叉树 图 算法 内排序 内排序 直接插入插入 二分插入插入 插入插入表 壳插入排序
我在学习算法和数据结构时一直保留的一些练习题和笔记。 散记 渗透问题,顶行到底行,相反,有一个虚拟的顶部和一个虚拟的底部,以便简化问题。 数学 \sum_{i=1}^{n} i = 1+2+...+n = n(n+1)/2 \sum_{i=1}^{n} i-1 =...
以下是我在学习过程中的笔记记录,主要包含JAVA虚拟机、JAVA并发与集合、数据库原理、数据结构与算法、设计模式等 深入理解JAVA虚拟机 前言 JAVA虚拟机的定义 JAVA语言的水深 如何学习JVM 项目成果 文章目录 思维...
Java常量变量讲解,三大逻辑结构详解,面向对象基础介绍。代码加注释,每行注释详解,配合博文笔记使用。 1.循环算法 2.排序算法 3.数组遍历算法 6.数据类型 7.流程控制语句 8.数组 9.二维数组 10.面向对象
第三章 Sql查询与函数 一、 SQL概述 SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。 SQL...
sift java 源码 喵数据结构 ...对数据结构想了解并且感兴趣的人群,整理这些笔记加源码,时间跨度也算将近半年时间了,希望对想学习数据结构的人或者正在学习数据结构的人群有帮助。 第一次做这样的事儿,如
深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...
2012-06-11 21:09 1,553,768 数据结构算法Visual.C.6.0程序集_源码.rar 2012-06-11 21:42 87,040 时域卷积定理的证明.ppt 2012-06-11 21:10 4,371 更改网关IP.rar 2012-06-11 20:57 1,419 栈的实现.txt 2012-06-11 ...