排序大集合java
今日面试被问到排序问题,发现自己的不足,特来查漏补缺:
首先是各大排序算法的总结表
排序算法 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定性 |
冒泡排序 | Ο(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的更多相关文章
- 十大经典排序算法(java实现、配图解,附源码)
前言: 本文章主要是讲解我个人在学习Java开发环境的排序算法时做的一些准备,以及个人的心得体会,汇集成本篇文章,作为自己对排序算法理解的总结与笔记. 内容主要是关于十大经典排序算法的简介.原理.动静 ...
- PourOver – 快速筛选和排序大的数据集合
PourOver 是一个用于对大数据集合进行快速过滤的 JavaScript 库.它可以在60fps下运行,允许您构建数据研究应用和档案,即不必等待一个数据库调用来呈现查询结果. PourOver 基 ...
- Java 学习笔记 两大集合框架Map和Collection
两大框架图解 Collection接口 由第一张图,我们可以知道,Collection接口的子接口有三种,分别是List接口,Set接口和Queue接口 List接口 允许有重复的元素,元素按照添加的 ...
- Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介
Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...
- JAVA大集合数据分批次进行切割处理
今天遇到一个大集合里面的数据删除问题, 因为是一个大集合,如果同时传递到数据库,那么就会造成数据库压力 所以分批次的进行批量操作 其实 也可以采用多线程来处理或者多批次加多线程来处理都是可以的 下面的 ...
- 各种排序算法及其java程序实现
各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort)1. 基本思想 ...
- 各大公司java后端开发面试题
各大公司Java后端开发面试题总结 ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离 ...
- 排序算法及其java实现
各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort) 1. 基本思 ...
- 干货100+ 最超全的web开发工具和资源大集合
干货100+ 最超全的web开发工具和资源大集合 作为Web开发者,这是好的时代,也是坏的时代.Web开发技术也在不断变化.虽然很令人兴奋,但是这也意味着Web开发人员需要要积极主动的学习新技术和 ...
随机推荐
- Git自动化合并多个Commit
目录 git rebase逻辑 git editor的修改 处理git-rebase-todo文件 Python实现 当我们有多个commit或者从开源处拿到多个commit时,想合成一个commit ...
- JavaWeb之搭建自己的MVC框架
https://blog.csdn.net/anita9999/article/details/83378111 自己写一个mvc框架吧(一) https://www.cnblogs.com/heba ...
- java8_api_net
网络编程1 操作ip地址 核心类 InetAddress 相关方法 getByName,getAllByName,getLocalHost 操作socket地址 ...
- 创建一个dynamics 365 CRM online plugin (八) - 使用Shared Variables 在plugins 之前传递data
CRM 可以实现plugin之前的值传递. 我们可以使用SharedVariables 把值在plugin之间传递 实现plugins之间的传递非常简单,我们只需要用key value pair来配对 ...
- 结对编程core_6
林静雯PB16060913 李鑫PB16061107 对于这种结对的工作,由于有过电子设计实践的基础,大概知道建一个工程需要做的事,有点经验还是有帮助的. 一.问题要求: 1·主要功能是随机产生有效的 ...
- [ZZ] 多领域视觉数据的转换、关联与自适应学习
哈工大左旺孟教授:多领域视觉数据的转换.关联与自适应学习 http://blog.sciencenet.cn/home.php?mod=space&uid=3291369&do=blo ...
- 微软 workflow 工作流总结
1.状态机工作流 (1)状态机工作流从state1 流转到 state2 到stateN (2) state中有执行状态和退出状态 (3) 在进入下一个步骤(state1 到 state2)前,首先会 ...
- 2018-2019-2 20165312《网络攻防技术》Exp5 MSF基础应用
2018-2019-2 20165312<网络攻防技术>Exp5 MSF基础应用 目录 一.知识点总结 二.攻击实例 主动攻击的实践 ms08_067 payload/generic/sh ...
- 【docker】服务随容器启动而自启动
场景: 有一个docker, 在该docker中有服务A,希望每次启动容器时服务A都随着容器启动.这样就不用每次都进入容器手动启动服务了. 方法: 1.需要在docker中添加一个启动服务脚本auto ...
- oracle、grid 用户ID
oracle.grid 用户ID [root@db-rac02 rules.d]# id oracle uid=54321(oracle) gid=54321(oinstall) groups=543 ...