首页 > 编程语言 >java基础知识之 算法 【冒泡排序】【快速排序】

java基础知识之 算法 【冒泡排序】【快速排序】

时间:2023-06-04 11:32:35浏览次数:48  
标签:java 大数 int sortIn 个数 冒泡排序 基础知识 放后 小数


 

/**

@auther:kevin

@function:

 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

*/
public class BubbleSort
{
 public static void main(String args[]){
 int a[] = {110,23,1,12,34,23} ; //定义一个数组 
 int temp;  //temp用于存储
 for(int i=1;i <=a.length-1;i++)
 {
  for (int j=0;j<=a.length-1-i; j++)
  { 
   if(a[j]>a[j+1])//如果前一个数大于后一个数
   { 
    temp = a[j+1];  //a[j]与a[j+1]调换位置
    a[j+1] = a[j];
    a[j] = temp;
   }
  }
 }
 for(int i=0;i <a.length;i++)
 System.out.println(a[i]);
 }
}

 

 

-------------------------------------------------------------------------

 【快读排序】

import java.util.Arrays;
/**
 * 快速排序
 * @author Administrator
 *
 */
public class QuickSort {
/**
 * 一趟比较划分结果
 * @param sortIn 传入的数组
 * @param i 区间下界
 * @param j 区间上界
 * @return 返回基准最终位置
 */
  private static int partition(Integer[] sortIn, int i, int j) { 
  
         int pivot = sortIn[i];   
         while (i < j) {   
             // 从右向左扫描,查找第一个关键字小于pivot的记录   
             while (i < j && sortIn[j] >= pivot)   
                 j--;   
             if (i < j) {   
                 swap(sortIn, i, j);// 交换sortIn[i]和sortIn[j]   
                 i++;   
             }   
   
            // System.out.println("从右向左扫描:" + Arrays.asList(sortIn).toString());   
                
             // 从左向右扫描,查找第一个关键字大于pivot的记录   
             while (i < j && sortIn[i] <= pivot)   
                 i++;   
             if (i < j) {   
                 swap(sortIn, i, j);   
                 j--;   
             }   
                
            // System.out.println("从左向右扫描:" + Arrays.asList(sortIn).toString());   
         }   
         sortIn[i] = pivot;// 基准位置已被最终定位   
         //System.out.println("标记:" + pivot);   
         return i;   
     }  
  /**
   * 递归实现快速排序
   * @param sortIn
   * @param low
   * @param high
   */
    public static void quickSort(Integer[] sortIn, int low, int high) {   
         int pivotpos;// 划分后的基准记录的位置   
         if (low < high) {// 仅当区间长度大于1时才需排序   
             pivotpos = partition(sortIn, low, high);// 做划分   
             quickSort(sortIn, low, pivotpos - 1);// 对左区间进行递归排序   
             quickSort(sortIn, pivotpos + 1, high);// 对右区间进行递归排序   
         }
         
     }    
  private static void swap(Integer[] sortIn, int i, int j) {
   // TODO Auto-generated method stub
   int temp = sortIn[i];
   sortIn[i] = sortIn[j];
   sortIn[j] = temp;
   
  }
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Integer[] a=new Integer[] { 8, 6, 1, 5, 4 };
  quickSort(a,0,a.length-1);
  System.out.println("最终结果:" + Arrays.asList(a).toString());   
 }}

 

标签:java,大数,int,sortIn,个数,冒泡排序,基础知识,放后,小数
From: https://blog.51cto.com/u_9427273/6410245

相关文章

  • java软件开发工程师实习求职常见面试题
    1、请说出作用域public,private,protected,以及不写时的区别这四个作用域的可见范围如下表所示。说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。 作用域   当前类同一package子孙类其他packagepublic   √    √         √      ......
  • 2022-2023 java高级面试总结
    1.Java内存模型是什么?JMM即Java内存模型(Javamemorymodel),在JSR133里指出了JMM是用来定义一个一致的、跨平台的内存模型,是缓存一致性协议,用来定义数据读写的规则。Java内存模型规范java如何按需禁用缓存和编译优化的方法。2.mysql查询第一万条数据后20条数据,sql语句如何写?sel......
  • 2022-2023-java大厂面试真题
    【美团】面试真题: 1、SPRINGAOP底层原理 一、AOP概念: AOP(AspectOrientedProgramming),即面向切面编程,可以说是OOP(ObjectOrientedProgramming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发......
  • Java 容器详解:使用与案例
    Java容器是一套工具,用于存储数据和对象。可以与C++的STL类比。Java容器也称为JavaCollectionFramework(JCF)。除了存储对象的容器之外,还提供了一套工具类,用于处理和操作容器中的对象。总体来说,这是一个框架,它包含了Java对象容器和工具类。一、概览容器主要包括Collection......
  • java中Date类型和时间戳、Date和String互转代码
    /***10位时间戳转Date类型*@paramtimeStamp*@return*/publicstaticDatestamp2Date(StringtimeStamp){SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Datedate=null;try{......
  • Java反编译工具Jad的下载与使用示例
    场景Java反编译工具-JD-GUI下载以及使用:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/84317051上面讲过Java反编译工具JD-GUI的使用,如果使用jad并通过命令如何实现反编译。 为了验证Java开发手册中为什么不推荐使用+进行字符串拼接,我们编写示例代码并编译和......
  • CoreJava笔记
    Day1-java基础java发展史1995年SUN公司发布了java2005年将JDK1.5更名为JDK5.02009年Oracle收购了SUN公司2014年推出了JDK8.0....java的优势简单纯面向对象开源跨平台前期准备安装JDK配置环境变量JAVA_HOME:JDK的安装路径作用:告知计算机其他软......
  • 关于建立一个Java项目全过程(专对于新手)
    关于建立一个Java项目全过程一、Java开发环境搭建1.JDK与JREJDK=JRE+开发工具集(例如Javac编译工具等)JRE=JVM+JavaSE标准类库2.JDK的下载下载网址(Oracle公司官网):www.oracle.com这里链接具体下载网址:https://www.oracle.com/java/technologies/downloads/复制链接......
  • Java基础知识:面试官必问的问题
    数据类型基本类型byte/8char/16short/16int/32float/32long/64double/64boolean/~boolean只有两个值:true、false,可以使用1bit来存储,但是具体大小没有明确规定。JVM会在编译时期将boolean类型的数据转换为int,使用1来表示true,0表示false。JVM支持boolean......
  • Java基础知识:面试官必问的问题
    数据类型基本类型byte/8char/16short/16int/32float/32long/64double/64boolean/~boolean只有两个值:true、false,可以使用1bit来存储,但是具体大小没有明确规定。JVM会在编译时期将boolean类型的数据转换为int,使用1来表示true,0表示false。JVM支持boolean......