排序第一天,回忆关键字

  选择,插入,希尔,归并,快排(包括三向快排),堆排序。

  选择:

    实现原理:内外循环,选择最小,比较。

    关键点:for(k =i+1 ,k<N,k++){a[j]<a[min],min=j}

  插入:

     实现原理:往左插入最小

    关键点:for(int j = i+1, k > 0 && less(a[j],a[j-1],j--)

  希尔:

    实现原理:插入的改进,使用递增序列0,1,4,13………………,分组插入

    关键点:

    while(h<N/3){

      h=3*h+1;

     for(int j = i, j >= h && less(a[j],a[j-h],j=j-h)

 

       h=h/3;

    }

  归并:

    实现原理:原地,自顶向下,自底向上,递归,使整体分成小数组

    关键点:

      mergesort(a,lo,mid);

mergesort(a,mid+1,hi);

merge(a,lo,mid,hi);

for (int k = lo; k <= hi; k++)
if (i > mid)
a[k] = aux[j++];
else if (j > hi)
a[k] = aux[i++];
else if (SortUtils.less(aux[j], aux[i]))
a[k] = aux[j++];
else
a[k] = aux[i++];

}

 

快排:

 实现原理:选择a[lo]第一次,从右往左搜比他大,从左往右搜比他小,就是a[++i]、a[--j]与a[lo]=v对比,小于 大于,三项添加等于

 关键点:切分partition

while (SortUtils.less(a[++i], v))
if (i == hi)
break;
while (SortUtils.less(v, a[--j]))
if (j == lo)
break;
if (i >= j) {
break;
}

 

堆排序

   实现原理:优先队列,有序化,sink

   关键点:for用来构建堆有序,while使用来sink,从a[1]使用,后面exch和less减一

    

int N = a.length;
for (int i = N / 2; i >= 1; i--) {
sink(a, i, N);
}
while (N > 1) {
exch(a, 1, N--);
sink(a, 1, N);
}
}

 

private static void sink(Comparable[] a, int j, int n) {
while (2 * j <= n) {
int h = 2 * j;
if (h < n && less(a, h, h + 1)) {
h++;
}
if (!less(a, j, h)) {
break;
}
exch(a, j, h);
j = h;
}

}

    

转载于:https://www.cnblogs.com/ykong/p/4321266.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 软件盘弹回去的最好体验,Android 软键盘弹出 日常填坑

开发输入框的开发者都会遇到一个问题&#xff0c;那就是在登录界面时&#xff0c;当你点击输入框时&#xff0c;下边的按钮有时会被输入框挡住&#xff0c;这个不利于用户的体验&#xff0c;所以很多人希望软键盘弹出时&#xff0c;也能把按钮挤上去。这样的交互更人性化&#…

Java JVM、JNI、Native Function Interface、Create New Process Native Function API Analysis

目录 1. JAVA JVM 2. Java JNI: Java Native Interface 3. Java Create New Process Native Function API Analysis In Linux 4. Java Create New Process Native Function API Analysis In Windows 1. JAVA JVM 0x1: JVM架构简介 JVM是Java Virtual Machine(Java虚拟机)的缩写…

php 输入汉字自动带出拼音和英文

需求就是添加一个字段的时候&#xff0c;自动带出中文和英文&#xff0c;方便数据索引。这里只贴下代码&#xff0c;英文用在线api&#xff0c;中文用类库。我觉得这个拼音类库比较好&#xff0c;不会出现重庆是zhongqing之类的问题&#xff0c;因为可以自定义添加维护。 要说明…

小android模拟器,小姚Android模拟器工作室版本v6.2.7.0正式版

逍遥Android Emulator Studio Edition是高质量的Android模拟器. 此版本是特殊版本&#xff0c;支持无限的多打开&#xff0c;智能管理和组控制模式. 它是专门为需要商业营销的用户设计的. Xiaoyao Android Emulator Studio Edition具有强大的引擎和良好的兼容性全能营销王 安卓…

判断 iframe 是否加载完成的完美方法(转)

般来说&#xff0c;我们判断 iframe 是否加载完成其实与 判断 JavaScript 文件是否加载完成 采用的方法很类似&#xff1a; var iframe document.createElement("iframe"); iframe.src "http://www.planabc.net"; if (!/*cc_on!*/0) { //if not IE if…

【原创】注意析构函数的使用

清单&#xff1a;虚析构函数使用 1 class X { 2 public: 3 virtual ~X() default; // 编译器自动生成 defaulted 函数定义体4 private: 5 int x; 6 }; 7 class Y: public X { 8 private: 9 int y; 10 }; 11 int main(){ 12 X* x new Y; 13 delete x; 清单…

html5调用手机摄像头和相册,h5 调用手机摄像头/相册

html 部分js 部分getBase64: function (file, callback) {var maxWidth 640if (file.files && file.files[0]) {var thisFile file.files[0]// if (thisFile.size > 524288) {// this.showToast("图片不能超过512k&#xff01;");// return;// }var…

hadoop中实现定制Writable类

Hadoop中有一套Writable实现可以满足大部分需求&#xff0c;但是在有些情况下&#xff0c;我们需要根据自己的需要构造一个新的实现&#xff0c;有了定制的Writable&#xff0c;我们就可以完全控制二进制表示和排序顺序。 为了演示如何新建一个定制的writable类型&#xff0c;我…

html5carousel图片轮播,jQuery响应式轮播图插件VM Carousel

插件描述&#xff1a;VM Carousel是一款jQuery响应式轮播图插件。该jquery轮播图插件支持自动播放模式&#xff0c;支持动态改变图片尺寸&#xff0c;支持居中模式&#xff0c;以及无限循环等。使用方法在页面中引入jquery.vm-carousel.css&#xff0c;jquery和jquery.vm-carou…

tableview或scrollview Y轴发生变化解决方案

在viewDidLoad中加入 self.automaticallyAdjustsScrollViewInsets NO; 转载于:https://www.cnblogs.com/mo-shou/p/4335163.html

NOIP 货车运输

题目描述 Description A 国有 n 座城市&#xff0c;编号从 1 到 n&#xff0c;城市之间有 m 条双向道路。每一条道路对车辆都有重量限制&#xff0c;简称限重。现在有 q 辆货车在运输货物&#xff0c;司机们想知道每辆车在不超过车辆限重的情况下&#xff0c;最多能运多重的货物…

那是计算机房吗英语否定回答,【微课+教材+听力+知识点】PEP四年级英语下册 Unit 1...

原标题&#xff1a;【微课教材听力知识点】PEP四年级英语下册 Unit 1微课&#xff1a;Unit 1-PartA微课&#xff1a;Unit 1-PartB微课&#xff1a;Unit 1-PartC课文教材动画教材听力Unit 1 My schoolUnit 1 单词▲点右上方绿标即可收听Words in Unit 1first floor [ˌfɜːst ˈ…

django html显示xml,如何将HTML与Django集成?

Django可能会为此而大肆渲染。如果您想要的只是一种将表单链接到某些后端Python代码的方法&#xff0c;那么像Flask这样的微框架可能是更好的选择。下面是你如何用烧瓶做一个简单的表格&#xff1a;创建一个目录project&#xff0c;其中有一个目录templates你的模板很简单&…

PropertyGrid控件 分类(Category)及属性(Property)排序

最近在做表单设计器&#xff0c;设计器上的控件都是我们自己封装的&#xff0c;但每个属性类别里的属性是按照属性的拼音排序的&#xff0c;现在想按照PropertyIndex标识进行排序&#xff08;PropertyIndex的后三位是用来标识编辑器的&#xff09;。 具体实现如下&#xff1a; …

css3标签

-moz代表firefox浏览器私有属性 -ms代表ie浏览器私有属性 -webkit代表chrome、safari私有属性 -o代表opera私有属性 border-radius:2em; 向div元素添加圆角边框&#xff0c;这是一种缩小写法&#xff0c;等价于: border-top-left-radius:2em; border-top-right-radius:2em; bor…

用计算机计算出密码,自带计算器的密码

手机、电脑都会有自带的计算器&#xff0c;用惯了简易的计算器功能&#xff0c;不知道有没有感觉 iPhone 自带的计算器难用&#xff1f;后来才发现原来它还可以使用科学计算器进行指数函数、对数函数和三角函数的计算。只需要将 iPhone 转到横排模式就可以&#xff1a;这算不算…

PHP内核探索之变量(6)- 后续内核探索系列大纲备忘

年前因为工作比较饱和&#xff0c;现在又忙着换工作的事情&#xff0c;基本停止了对博文的更新。后续的博文&#xff0c;还是慢慢补上吧。 为了不至于过于发散&#xff0c;先搞个未成形的大纲&#xff0c;如下&#xff1a; PHP内核探索之变量 不平凡的字符串  PHP内核探索之…

ios 开发日记 21 -自动处理键盘事件的第三方库:IQKeyboardManager

我们写界面要考虑很多用户体验问题&#xff0c;键盘事件的响应就是比较麻烦的一种。我们需要监听键盘事件&#xff0c;考虑点击背景收起键盘、考虑键盘遮挡输入框问题等等&#xff0c;而且每个界面都要做这么一套。这个库帮我们解决了这个事情。 这个库的下载地址&#xff1a;h…

shopify在哪里填写html,[Shopify开店教程]添加嵌入代码

添加嵌入代码在Shopify管理员中创建购买按钮后&#xff0c;您就可以将其添加到您自己的网站或博客中。将嵌入代码添加到您网站的源HTML的过程有所不同&#xff0c;具体取决于您希望购买按钮和购物车在您的发布平台上显示的方式和位置&#xff0c;以及有时您在该平台上使用的主题…

activity生命周期图

转载于:https://www.cnblogs.com/aqianglala/p/4344431.html