package cn.test.bubble;

 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;

 /**
  * @author weianlai
  * @date 2018/11/2018/11/18 18:42
  */
 public class BubbleSort {

     public static void main(String[] args) {
 //        Integer[] arr = {1,8,3,5,9};
 //        String[] arr2 = {"f","a","y"};
 //        arraySort(arr2);
 //        System.out.println(Arrays.toString(arr2));

         List<String> list = new ArrayList<String>();
         list.add("f");
         list.add("a");
         list.add("y");
         listSort(list);
         System.out.println(list);
     }

     public static <T extends Comparable<T>> void listSort(List<T> list) {
         //将list转成数组
         Object[] arr = list.toArray();
         arraySort(arr);
         //改变list的值
         for (int i = 0; i < arr.length; i++) {
             list.set(i, (T) arr[i]);
         }
     }

     /**
      * 数组冒泡排序(泛型方法)
      * @param arr
      */
     public static <T> void arraySort(T[] arr) {
         int len = arr.length;
         boolean sorted = true;
         for (int j = 0; j < len-1; j++) {
             //假定有序
             sorted = true;
             for (int i = 0; i < len-1-j; i++) {
                 if (((Comparable) arr[i]).compareTo(arr[i+1]) > 0) {
                     T temp = arr[i];
                     arr[i] = arr[i+1];
                     arr[i+1] = temp;
                     sorted = false;
                 }
             }
             if (sorted) {
                 break;
             }
         }
     }

 }

list和数组排序(冒泡)的更多相关文章

  1. java基础入门之数组排序冒泡法

    public class ArrayTest03{ /* Name:数组排序,冒泡法 Power by :Stuart Date:2015-4-23*/ public static void main ...

  2. C++面试常见问题——06数组排序

    数组排序 冒泡.最简单的冒泡,没啥好讲的 #include<iostream> using namespace std; void BubbleSort(int a[],int len){ ...

  3. vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)

    vue源码业余时间差不多看了一年,以前在网上找帖子,发现很多帖子很零散,都是一部分一部分说,断章的很多,所以自己下定决定一行行看,经过自己坚持与努力,现在基本看完了,差ddf那部分,因为考虑到自己要换 ...

  4. javascript数组排序---2冒泡

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. java - day004 - 数组排序,插入,冒泡

    // 判断string 是否相等不能用 == 使用 equal 方法 Arrays.sort(数组);  数组排序算法 对基本类型. 优化的快速排序算法 对引用类型, 优化的合并排序算法

  6. JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)

    本文实例总结了JS数组排序技巧.分享给大家供大家参考,具体如下: 1.冒泡排序 var temp = 0; for (var i = 0; i < array.length; i++) { fo ...

  7. java数组排序(冒泡、直排)反转

    package lianxi; public class maopao { public static void main(String[] args){ int[] i=new int[]{45,6 ...

  8. 一些数组排序算法的简单实现(冒泡、插入、希尔、归并和qsort)

    #include <stdlib.h> #include <string.h> #include "sort.h" //冒泡排序 int bubbleSor ...

  9. 冒泡算法C#

    冒泡算法C# namespace数组排序 { classProgram { staticvoidMain(string[]args) { inttemp=; ,,,,,,,,}; #region该段与 ...

随机推荐

  1. QLoo graphql engine 学习二 基本试用(kubernetes)

    已经测试过docker&& docker-compose 的运行模式,下面测试下kubernetes的运行模式 kubernetes 我使用docker for mac qloo 安装 ...

  2. JFrog Artifactory CE c&&c++ 包管理工具

    JFrog Artifactory CE 支持conan 以及普通二进制c&&c++包管理 使用docker 进行环境的搭建测试 安装 docker run -d -p 8081:80 ...

  3. Git核心概念

    Git作为流行的分布式版本管理系统,用好它要理解下面几个核心的概念. 1.Git保寸的是文件完整快照,而不是差异变化或者文件补丁.每次提交若文件有变化则会指向上一个版本的指针而不重复生成副本. Git ...

  4. Autocad 2010+ObjectArx 2010 +Vs2010 的.net 开发设置(转)

    Autocad 2010+ObjectArx 2010 +Vs2010 的.net 开发设置 分类: ObjectArx.net2010-09-14 16:52 4203人阅读 评论(7) 收藏 举报 ...

  5. Android 查看Android版本的方法

    1.通过源码查看 Android 版本 路径:build/core/version_defaults.mk PLATFORM_VERSION := 2.通过编译时终端输出查看 ============ ...

  6. Python项目输出小类概率,机器学习

    from pandas import read_csv import numpy as np from sklearn.datasets.base import Bunch import pickle ...

  7. 公司培训lesson 1-代码质量

    课堂讲义 代码质量五大原则 编码规范 命名规范.学会合理科学的命名类名.方法名.变量名.命名宗旨:简洁明了,见名只意:了解常用单词缩写 注释.是否写根据所处工作环境的需要而决定.将以源代码写成以“注释 ...

  8. FTP和TCP、UDP

    应用:TFTP客户端 1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文 ...

  9. 通过PicturreId获取图片路径(Url)

    1.直接使用接口服务 _pictureService.GetPictureUrl((int)entity.SponsorPictureId); //entity是具体查询出来的实体对象 Sponsor ...

  10. C# 中带有中国农历的日期选择控件

    开源一款自己刚开始接触 C# 时开发的带有农历信息的日期选择控件,记得那时还是在2010年的寒假期间做的这个东西.刚开始接触 C# 时,使用WinForm来开发桌面程序,觉得简直是简单又迅速,由于 C ...