1 package struct;
2
3 /**
4 *
5 * @作者:dyy
6 * @公司:陕西科技大学
7 * @修改日期:
8 * @邮箱:1101632375@qq.com
9 * @描述:Java实现几种常见排序
10 */
11
12
13 //选择排序类
14 class SelectSort{
15 public void selectSort(int[] arr){
16 for(int i = 0;i < arr.length; i++){
17 int currentMax = i;//记录当前的最大值下标
18 for(int j = i + 1;j < arr.length;j++){
19 //找到最大值下标
20 if(arr[j] > arr[currentMax]){
21 currentMax = j;
22 }
23 }
24 int temp = arr[i];
25 arr[i] = arr[currentMax];
26 arr[currentMax] = temp;
27 }
28 }
29 public void print(int[] arr){
30 for(int i = 0;i<arr.length;i++){
31 System.out.print(arr[i]+" ");
32 }
33 }
34 }
35
36
37 //冒泡排序类
38 class BubbleSort{
39 //冒泡排序的实现
40 public void bubbleSort(int[] arr){
41 for(int i = 0;i < arr.length - 1;i++){
42 for(int j = 0;j < arr.length - 1 - i;j++){
43 if(arr[j] < arr[j+1]){
44 int temp = arr[j];
45 arr[j] = arr[j+1];
46 arr[j+1] = temp;
47 }
48 }
49 }
50 }
51 //打印数组
52 public void print(int[] a){
53 for(int i =0 ;i<a.length;i++){
54 System.out.print(a[i]+" ");
55 }
56 }
57 }
58
59
60 //插入排序
61 class InsertSort{
62 public void insertSort(int[] arr){
63 for(int i = 0; i < arr.length - 1;i++){
64 //将第一个元素当作排好序的
65 int j;
66 int insert = arr[i];
67 for(j = i;j > 0 && insert>arr[j-1];j--){
68 arr[j] = arr[j-1];
69 }
70 arr[j] = insert;
71 }
72 }
73
74 //打印数组
75 public void print(int[] a){
76 for(int i =0 ;i<a.length;i++){
77 System.out.print(a[i]+" ");
78 }
79 }
80 }
 1 public class TestVeriousSort {
2 public static void main(String[] args) {
3 int[] arr1 = {13,2,6,34,1,4,9,7,5};
4 //选择排序
5 System.out.println("选择排序"+"\n");
6 SelectSort obj = new SelectSort();
7 System.out.println("初始的数组:");
8 obj.print(arr1);
9 System.out.println("\n"+"排序后的数组:");
10 obj.selectSort(arr1);
11 obj.print(arr1);
12
13 //冒泡排序
14 System.out.println("\n"+"冒泡排序"+"\n");
15 BubbleSort obj1 = new BubbleSort();
16 System.out.println("初始的数组:");
17 obj1.print(arr1);
18 System.out.println("\n"+"排序后的数组:");
19 obj1.bubbleSort(arr1);
20 obj1.print(arr1);
21
22 //插入排序
23 System.out.println("\n"+"冒泡排序"+"\n");
24 InsertSort obj2 = new InsertSort();
25 System.out.println("初始的数组:");
26 obj2.print(arr1);
27 System.out.println("\n"+"排序后的数组:");
28 obj2.insertSort(arr1);
29 obj2.print(arr1);
30 }
31 }

常见排序——Java实现的更多相关文章

  1. 常见排序java实现

    public class Sort { public static void main(String[] args) { int[] data = {49,38,65,97,76,13,27,49}; ...

  2. 常见排序算法(附java代码)

    常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...

  3. 常见排序算法总结 -- java实现

    常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...

  4. Java基础-数组常见排序方式

    Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...

  5. 常见排序算法题(java版)

    常见排序算法题(java版) //插入排序:   package org.rut.util.algorithm.support;   import org.rut.util.algorithm.Sor ...

  6. Java基础语法(8)-数组中的常见排序算法

    title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...

  7. 常见排序算法(java实现)

    常见排序算法介绍 冒泡排序 代码: public class BubbleSort { public static void sort(int[] array) { int tValue; for ( ...

  8. 一些常见的Java面试题 & 面试感悟

    < 前言 > 近期在面试,深感这个行业的浮躁,一些菜不辣基的弱鸡开出的工资待遇要求,超过了我.不知道他们是怎么拿到那么高的工资的,难道是他在公司有亲戚朋友吗?有后台吗?是行业热钱真的过多了 ...

  9. 最常见的Java面试题及答案汇总(三)

    上一篇:最常见的Java面试题及答案汇总(二) 多线程 35. 并行和并发有什么区别? 并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. 并行是在不同实体上的多个事 ...

随机推荐

  1. 『与善仁』Appium基础 — 5、常用ADB命令(二)

    目录 9.查看手机运行日志 (1)Android 日志 (2)按级别过滤日志 (3)按 tag 和级别过滤日志 (4)日志格式 (5)清空日志 10.获取APP的包名和启动名 方式一: 方式二: 11 ...

  2. 近期业务大量突增微服务性能优化总结-4.增加对于同步微服务的 HTTP 请求等待队列的监控

    最近,业务增长的很迅猛,对于我们后台这块也是一个不小的挑战,这次遇到的核心业务接口的性能瓶颈,并不是单独的一个问题导致的,而是几个问题揉在一起:我们解决一个之后,发上线,之后发现还有另一个的性能瓶颈问 ...

  3. systemd-nspawn以及container的学习

    container的分类 目前container可以分为两大类,一类是Privileged container,一类是Unprivileged container. Privileged contai ...

  4. CLion 2021.2 debug报错 process exited with status -1 (attach failed (Not allowed to attach to process.

    Clion 升级 2021.2 版本后 debug 报错: process exited with status -1 (attach failed (Not allowed to attach to ...

  5. OpenXml SDK学习笔记(1):Word的基本结构

    能写多少篇我就不确定了,可能就这一篇就太监了,也有可能会写不少. OpenXml SDK 相信很多人都不陌生,这个就是管Office一家的文档格式,Word, Excel, PowerPoint等都用 ...

  6. mybatis中批量插入的两种方式(高效插入)

    MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用 ...

  7. (五)MySQL函数

    5.1  常用函数 5.2  聚合函数(常用) 函数名称 描述 COUNT() 计数 SUM() 求和 AVG() 平均值 MAX() 最大值 MIN() 最小值 ....   ....   想查询一 ...

  8. 问题 O: 寻找最大数(三)

    [提交][状态][讨论版] 题目描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数. 求这个新的整数的最大值是多少. 输入 多组测试数据. 每组测试数据占一行,每行 ...

  9. RabbitMQ 处理过慢,原来是一个 SQL 缓存框架导致的 GC 频繁触发

    一:背景 1. 讲故事 上个月底,有位朋友微信找到我,说他的程序 多线程处理 RabbitMQ 时过慢,帮忙分析下什么原因,截图如下: 这问题抛出来,有点懵逼,没说CPU爆高,也没说内存泄漏,也没说程 ...

  10. 菜鸡的Java笔记 第三十四 Annotation

    Annotation        多例模式特点:            1. 多例类可以有多个实例            2. 多例类必须自己创建自己的实例,并管理自己的实例,和向外界提供自己的实例 ...