排序小结(C++版)
一、快速排序
#include <iostream>
using namespace std; int adjust(int a[],int start,int end)
{
int i,j;
i=start;
j=end;
int temp=a[i];
while(i<j)
{
while(i<j&&temp<a[j])
j--;
if(i<j)
a[i++]=a[j];
while(i<j&&temp>=a[i])
i++;
if(i<j)
a[j--]=a[i];
}
a[i]=temp;
return i;
} void quicksort(int a[],int start,int end)
{
if(start<end)
{
int m=adjust(a,start,end);
quicksort(a,start,m-);
quicksort(a,m+,end);
}
} void print(int a[],int n)
{
for(int i=;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
} void main()
{
int a[]={,,,,,};
quicksort(a,,);
print(a,);
cout<<"hello world\n";
system("pause");
}
二、堆排序
#include <iostream>
using namespace std; //s表示根节点(仅s节点不满足堆)
//n表示所有节点的个数
//a[0]不参与排序
void adjust(int a[],int s,int n)
{
int j;
int temp=a[s];
for(j=*s;j<=n;j=*j)
{
if(j<n&&a[j]<a[j+])
j++;
if(temp>a[j])
break;
a[s]=a[j];
s=j;
}
a[s]=temp;
} void heapsort(int a[],int n)
{
int i;
for(i=n/;i>=;i--)
adjust(a,i,n);
for(i=n;i>;i--)
{
swap(a[],a[i]);
adjust(a,,i-);
}
} void print(int a[],int n)
{
for(int i=;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
} void main()
{
int a[]={-,,,,,,};
heapsort(a,);
print(a,);
system("pause");
}
排序小结(C++版)的更多相关文章
- 排序小结(C版)
一.快速排序(C源码) #include <stdlib.h> #include <stdio.h> int adjust(int a[],int start,int end) ...
- 排序小结(java版)
一.归并排序 package org.lxh.demo08.b; class Sort { private int[] a; private int n; Sort(int n) { a=new in ...
- iOS可视化动态绘制八种排序过程(Swift版)
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- 排序算法系列:选择排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)
在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 我总结一个清晰不罗嗦版: 原理: 从数组头元素索引i开始,寻找后面最小的值(比i位 ...
- 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题
常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...
- 常用排序算法--java版
package com.whw.sortPractice; import java.util.Arrays; public class Sort { /** * 遍历一个数组 * @param sor ...
- 秒杀9种排序算法(JavaScript版)
一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...
- Qt之QHeaderView自定义排序(终极版)
简述 本节主要解决自定义排序衍生的第二个问题-将整形显示为字符串,而排序依然正常. 下面我们介绍三种方案: 委托绘制 用户数据 辅助列 很多人也许会有疑虑,平时都用delegate来绘制各种按钮.图标 ...
- 常见的链表排序(Java版)
上篇博客中讲解了九大内部排序算法,部分算法还提供了代码实现,但是那些代码实现都是基于数组进行排序的,本篇博客就以链表排序实现几种常见的排序算法,以飨读者. 快速排序的链表实现 算法思想:对于一个链表, ...
随机推荐
- [Effective JavaScript 笔记]第65条:不要在计算时阻塞事件队列
第61条解释了异步API怎样帮助我们防止一段程序阻塞应用程序的事件队列.使用下面代码,可以很容易使一个应用程序陷入泥潭. while(true){} 而且它并不需要一个无限循环来写一个缓慢的程序.代码 ...
- 让hadoop-0.20.2自带的eclipse插件支持eclipse-3.5以上
hadoop-0.20.2自带的eclipse插件是不支持eclipse-3.5以上的,要想让它支持3.5以上就必须重新编译eclipse插件. 首先先修改 hadoop-0.20.2\src\co ...
- 机器学习实战-边学边读python代码(3)
程序清单2-3 归一化特征值: def autoNorm(dataSet): /* >>> barray([[ 1., 2., 3.], [ 2., 3., 4.], [ 10., ...
- 嵌入式Linux内核制作【转】
本文转载自:http://blog.csdn.net/coding__madman/article/details/51291316 1. Linux体系结构 从整体上来分,linux可以分为User ...
- 如何利用php array_multisort函数 对数据库排序
数据库中有4个字段分别是id,volume,edition,name. 要求对查询结果按照volume+edition从大到小排序.下面将一下array_multisort函数array_multis ...
- ReentrantReadWriteLock类和ReentrantLock类的区别
Java.util.concurrent.locks包定义了两个锁类,ReentrantLock和ReentrantReadWriteLock类. 当有很多线程都从某个数据结构中读取数据而很少有线程对 ...
- Map.Entry
Map.Entry Map是java中的接口,Map.Entry是Map的一个内部接口. Map提供了一些常用方法,如keySet().entrySet()等方法,keySet()方法返回值是Map中 ...
- js 多少天以后的时间
/** * 多少天以后的时间 * @param date 时间 * @param num 多少天 * @param type 类型 年 月 天(默认天) */ exports.afterDate = ...
- 在li元素中放入img图片时li的高度问题
在li元素中放入img图片时li的高度会比img图片的高度多出几个像素,解决这个问题只需要将img元素的css设置成vertical-align: middle;就可以解决.
- PHP计算时间差,并返回什么时间之前发表的内容
<?php header("Content-type: text/html; charset=utf-8"); function time2Units ($time){ $y ...