今日面试被问到排序问题,发现自己的不足,特来查漏补缺:

首先是各大排序算法的总结表

排序算法大合集 
排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性
冒泡排序 Ο(n2) Ο(n) Ο(n2) Ο(1)  稳定
选择排序 Ο(n2) Ο(n2) Ο(n2) Ο(1)  不稳定
插入排序 Ο(n2) Ο(n) Ο(n2) Ο(1)  稳定
希尔排序 Ο(nlogn) Ο(nlog2n) Ο(nlog2n) Ο(1)  不稳定
归并排序 Ο(nlogn) Ο(nlogn) Ο(nlogn) Ο(n) 稳定 
快速排序 Ο(nlogn) Ο(nlogn) Ο(n2) Ο(logn) 不稳定 
堆排序 Ο(nlogn) Ο(nlogn) Ο(nlogn) Ο(1) 不稳定 
计数排序 Ο(n+k) Ο(n+k) Ο(n+k) Ο(k) 稳定 
桶排序 Ο(n+k) Ο(n+k) Ο(n2) Ο(n+k) 稳定 
基数排序 Ο(n*k) Ο(n*k) Ο(n*k) Ο(n+k) 稳定 

今天回忆了冒泡排序与选择排序两种:

冒泡排序:比较两个相邻元素,将值大的元素交换至右端。

依次比较相邻的两个数,将小数放在左端,大数放在右端。第一趟结束后,最后一个数是最大的,第二趟比较时最后一个数不参加比较。

选择排序:每一趟在待排序的记录中找出最小元素,放在已经排好序的序列最后,直到所有记录排序完成。

第一趟排序,将arr[1]~arr[n]中最小的数与arr[1]交换;第2趟,将arr[2]~arr[n]间最小的数与arr[2]交换,依次类推。

二者区别

1)冒泡排序是比较相邻两个位置的数,而选择排序是按照顺序比较,找到最大值或者最小值;

2)冒泡排序每一轮比较后,位置不对都需要换位置,而选择排序每一轮比较只换位一次;

3)冒泡排序是通过数去找位置,选择排序是通过位置来找数。

冒泡排序的优点比较简单、空间复杂度低,稳定;

缺点:时间复杂度较高,效率慢;

选择排序的优点:一轮比较只需要换一次位置

缺点:效率慢,不稳定,如5,3,5,2,9,第一次互换位置后,两个5的相对位置前后顺序就破坏了。

代码:待补充,已编辑进eclipse中。

首先用自己最近实战的java语言来进行一个排序问题编程:

问题:对输入的n个数排序并输出

输入:两行,第一行为n;第二行为需要进行排序的n个数

输出:一行,即排序后的数

 import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String [] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
int[] arr = new int[n];
for(int i = 0;i<n;i++){
arr[i] = in.nextInt();
}
Arrays.sort(arr);
for(int i = 0;i<n;i++)
System.out.print(arr[i]+" ");
System.out.println();
}
}
}

排序大集合java的更多相关文章

  1. 十大经典排序算法(java实现、配图解,附源码)

    前言: 本文章主要是讲解我个人在学习Java开发环境的排序算法时做的一些准备,以及个人的心得体会,汇集成本篇文章,作为自己对排序算法理解的总结与笔记. 内容主要是关于十大经典排序算法的简介.原理.动静 ...

  2. PourOver – 快速筛选和排序大的数据集合

    PourOver 是一个用于对大数据集合进行快速过滤的 JavaScript 库.它可以在60fps下运行,允许您构建数据研究应用和档案,即不必等待一个数据库调用来呈现查询结果. PourOver 基 ...

  3. Java 学习笔记 两大集合框架Map和Collection

    两大框架图解 Collection接口 由第一张图,我们可以知道,Collection接口的子接口有三种,分别是List接口,Set接口和Queue接口 List接口 允许有重复的元素,元素按照添加的 ...

  4. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介

    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...

  5. JAVA大集合数据分批次进行切割处理

    今天遇到一个大集合里面的数据删除问题, 因为是一个大集合,如果同时传递到数据库,那么就会造成数据库压力 所以分批次的进行批量操作 其实 也可以采用多线程来处理或者多批次加多线程来处理都是可以的 下面的 ...

  6. 各种排序算法及其java程序实现

    各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort)1. 基本思想 ...

  7. 各大公司java后端开发面试题

    各大公司Java后端开发面试题总结 ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离 ...

  8. 排序算法及其java实现

    各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort) 1. 基本思 ...

  9. 干货100+ 最超全的web开发工具和资源大集合

    干货100+ 最超全的web开发工具和资源大集合   作为Web开发者,这是好的时代,也是坏的时代.Web开发技术也在不断变化.虽然很令人兴奋,但是这也意味着Web开发人员需要要积极主动的学习新技术和 ...

随机推荐

  1. I.MX 6UL与6ULL应用领域区别

  2. QCAD 怎么把多余的线剪掉

    QCAD 怎么把多余的线剪掉 如下所示如果我在 AutoCAD 中我是使用 Trim 的功能,但是在 QCAD 似乎不可行. 然后现在以上而有个 Divide,感觉有用,相当于线打断,然后再删除,这个 ...

  3. Java泛型相关总结(上)

    最近在看<Java核心技术>泛型相关的部分,总结下. 泛型程序设计是什么? 泛型编程(generic programming)是计算机编程中的一种风格,类型通过参数指定.意味着编写的代码可 ...

  4. python 基础之自动类型转换和强制类型转换

    一:自动类型转换 自动类型转换注意针对Number数据类型来说的 当2个不同类型的数据进行运算的时候,默认向更高精度转换 数据类型精度从低到高:bool int float complex #关于bo ...

  5. 03day->python基本数据类型

    基本数据类型 1.数字(int)     a = 5     a.bit_length()  # 查看数字实际用到的bit位 2.布尔值(bool)     用于条件判断 3.字符串(str)     ...

  6. Ubuntu 执行脚本报错:c.sh: Syntax error: "(" unexpected

    在Ubuntu下执行脚本报错 c.sh: Syntax error: "(" unexpected 解决办法 sudo dpkg-reconfigure dash ubuntu@i ...

  7. [ZZ] 用matlab绘制箭头

    用matlab绘制箭头 http://npfeng900.blog.163.com/blog/static/14456108201221922944998/ 用matlab绘制箭头1 用matlab绘 ...

  8. 一维信号频谱图仿真——matlab

    程序1: %在MATLAB中是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当采样时间间隔足够小时,这些离散的采样值就能较好地近似出连续信号,matlab中连续信号的显示实际上还是离散信号的显 ...

  9. Guava - Ordering

    guava中Ordering类是对Compartor接口的实现,但它也只是一个抽象类. 当调用Ordering.natural()方法时,它就会返回一个NaturalOrdering的对象,Natur ...

  10. Unix即IDE

    前言 在图形界面下大家都想要这种能够集成在一起的工具,那是因为这类窗口应用除了用复制粘贴,没有别的方法使他们更好地协同工作,它们缺失一种 共用接口(common interface) . 有关这个问题 ...