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. Connected to an idle instance.

    Connected to an idle instance:连接到空闲实例 原因:数据库或者监听没启动

  2. CobaltStrike上线Linux

    为获得最佳的阅读体验,请访问我的个人主页: https://xzajyjs.cn/ 在红蓝对抗中,我们常需要对目标进行长时间的控制,cobaltstrike原生对于上线windows比较轻松友好,但如 ...

  3. 如何系统学习C 语言(中)之 联合体、枚举篇

    在C语言中有一个和结构体非常像的数据类型,它的名字叫做联合体,也被称为共用体或公用体. 1,联合体 1,联合体的定义 定义联合体需要使用"union" 关键字,格式如下: unio ...

  4. OWASP-Top5-(Security Misconfiguration 安全配置错误)

    概述 从上一版的第 6 位开始,90% 的应用程序都经过了某种形式的错误配置测试.随着更多转向高度可配置的软件,看到这一类别上升也就不足为奇了.值得注意的CWE包括CWE-16 Configurati ...

  5. [gym102978D]Do Use FFT

    前置知识 (以下内容并不严谨,可以参考论文<转置原理的简单介绍>) 对于一个算法,其为线性算法当且仅当仅包含以下操作: 1.$read\ i$,将$r_{i}$的值赋为(下一个)读入的元素 ...

  6. [hdu7026]Might and Magic

    (以下默认$A_{0},D_{0},P_{0},K_{0}$都为非负整数) 显然存活轮数$S=\lceil\frac{H_{0}}{C_{p}\max(A_{1}-D_{0},1)}\rceil$​​ ...

  7. [spojDIVCNT1]Counting Divisors

    定义 约定1:以下分数都是最简,且令$\frac{1}{0}$有意义,其大于其余分数,并称平行于$y$轴的直线斜率为$-\frac{1}{0}$ 分数加:对于分数$a=\frac{a_{1}}{a_{ ...

  8. 语音合成论文翻译:2019_MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis

    论文地址:MelGAN:条件波形合成的生成对抗网络 代码地址:https://github.com/descriptinc/melgan-neurips 音频实例:https://melgan-neu ...

  9. Ubuntu文件系统结构

    /bin: bin是Binary的缩写.存放系统中最常用的可执行文件(二进制). /boot: 这里存放的是linux内核和系统启动文件,包括Grub.lilo启动器程序. /dev: dev是Dev ...

  10. 「后端小伙伴来学前端了」Vuex进阶操作,让你的代码更加高效(简称如何学会偷懒 【手动狗头】)

    学妹手机里的美照 前言 前一篇写了Vuex基本使用,用起来还稍稍有些繁琐,代码有很多 冗余的地方,这篇就带着大家用更简单的方式来使用Vuex(其实就是怎么更好的偷懒,用更少的代码来完之前的事情) 进入 ...