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. Python——Excel转Json工具

    Python工具Excel转Json 前置条件 1.安装python 下载python 我下载的是2.7: 2.配置环境变量 我的电脑右键--属性--高级系统设置--环境变量: 添加python的安装 ...

  2. 『学了就忘』Linux基础命令 — 27、搜索操作相关命令

    目录 1.whereis命令 2.which命令 3.locate命令 1.whereis命令 whereis是搜索系统命令的命令,也就是说,whereis命令不能搜索普通文件,而只能搜索系统命令. ...

  3. OOP作业总结一

    PS:建议用 Edge 查看此博客,Chrome 的话文章界面会有点窄,看起来可能会比较难受,我想改宽点但是不会改. 我会改了!改宽了一些,现在看起来舒服了很多,芜湖. 问题数据已修复,我们胜利辣! ...

  4. namaspace之pid namespace

    认识Namespace namespace 是 Linux 内核用来隔离内核资源的方式.通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的 ...

  5. mongodb安装教程(一)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/fengtingYan/article/de ...

  6. Qt 实时显示系统时间

    前言 我们用一个label控件来实时显示系统时间,用到 QTimer 和 QDateTime 这个两个类. 正题 头文件: #ifndef MAINWINDOW_H #define MAINWINDO ...

  7. loadRunner运行场景时,事务数为0或是只显示添加的事务的数

    脚本编辑好后,不要着急到controller去执行,注意查看Run-time Settings(运行是设置)-->General(常规)-->Miscellaneous(其他)中查看Aut ...

  8. Java多线程之Atomic:原子变量与原子类

    Atomic简介 ​ Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类这个包里面提供了一组原子变量类. ​ 其基本的特性就是在多线程 ...

  9. 四. 几个Promise常用API的介绍与使用

    四. 几个常用API的介绍与使用 1. Promise构造函数:Promise(excutor){} excutor函数:同步执行 (resolve, reject) => {} resolve ...

  10. 保姆级别的vue + ElementUI 搭建后台管理系统教程

    vue + ElementUI 搭建后台管理系统记录 本文档记录了该系统从零配置的完整过程 项目源码请访问:https://gitee.com/szxio/vue2Admin,如果感觉对你有帮助,请点 ...