java冒泡排序法代码 求冒泡排序的java代码

作者&投稿:芒梁 (若有异议请与网页底部的电邮联系)

冒泡排序是比较经典的排序算法。代码如下:

for(int i=1;i<arr.length;i++){

for(int j=1;j<arr.length-i;j++){

//交换位置

}    

拓展资料:

原理:比较两个相邻的元素,将值大的元素交换至右端。

思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。

第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;

第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;

依次类推,每一趟比较次数-1;

……

举例说明:要排序数组:int[] arr={6,3,8,2,9,1};   

for(int i=1;i<arr.length;i++){

for(int j=1;j<arr.length-i;j++){

//交换位置

}    

参考资料:冒泡排序原理



我们可以创建一个java程序来使用冒泡排序对数组元素进行排序。冒泡排序算法被称为最简单的排序算法。

在冒泡排序算法中,数组从第一个元素遍历到最后一个元素。这里,当前元素与下一个元素进行比较。如果当前元素大于下一个元素,则它被交换。

  • 公共类 BubbleSortExample {   

  • static void  bubbleSort(int [] arr){   

  • int  n = arr.length;  

  • int  temp =  0 ;  

  • for (int  i = 0 ; i <n; i ++){  

  • for (int  j = 1 ; j <(ni); j ++){  

  • if (arr [j- 1 ]> arr [j]){  

  • //交换元素  

  • temp = arr [j- 1 ];  

  • arr [j- 1 ] = arr [j];  

  • arr [j] = temp;  

  • }  

  • }  

  • }  

  • }  

  • public static void  main(String [] args){    

  • INT  ARR [] = { 3 ,60 ,35 ,2 ,45 ,320 ,5 };  

  • System.out.println(“Bubble Sort之前的数组” );  

  • for (int  i = 0 ; i <arr.length; i ++){  

  • System.out.print(arr [i] +  “” );  

  • }  

  • 的System.out.println();  

  • 冒泡(ARR); //使用冒泡排序来排序数组元素  

  • System.out.println(“冒泡排序后的数组” );  

  • for (int  i = 0 ; i <arr.length; i ++){  

  • System.out.print(arr [i] +  “” );  

  • }  

  • }  

  • }  

  • 输出:

  • 数组在排序之前3 60 35 2 45 320 5

  • 数组冒泡排序2 3 5 35 45 60 320




Java数据结构与算法,冒泡排序法,你学会了吗



int a[] = {1,2,3,4,5};
for(int i=0;i<a.length-1;i++){
    for(int j=i+1;j<a.length;j++){
        if(a[i]>a[j]){
            int k = a[i];
            a[i] = a[j];
            a[j] = k;
        }
    }
}

这是是从小到大的排序



public class $ {

    public static void main(String[] args) {

        int[] arr = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };

        for (int i = 0; i < arr.length; i++) {
            for (int j = i; j < arr.length; j++) {

                if (arr[i] > arr[j]) {
                    int tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;
                }
            }
        }

        System.out.println("the max is " + arr[arr.length - 1]);
    }
}


求JAVA冒泡排序法的代码~

你好!很高兴能帮到你。
由于你刚学Java,所以一些编程规范是需要注意的,而我提供给你的答案看起来虽然有点复杂,不过采用了面向对象的编程思想,尽量做到低耦合高内聚,同时冒泡算法也做了升级,为冒泡的高级快速排序算法,不过为了对比,也保存了传统的冒泡算法。
需要讲解一下,算法本身不难,难在如何做到编程规范、以及方便修改、易于修改、使得程序灵活、低耦合高内聚。
算法部分请看Bubble类,里面有两种算法,有注释。
主类为TestBubble,主要用于调用Bubble对象运行算法、StuInfo对象提供学生作者信息、Info对象提供运行过程中提示信息。
运行结果如下(Bubble类为核心算法类):
************************************
run:
请输入您将要输入整数的个数:
10
请输入一串数字进行冒泡排序,注意:每次只输入一个,输完则回车
1:10
2:23
3:11
4:56
5:45
6:26
7:59
8:28
9:84
10:79
初始序列的数组为:
10 23 11 56 45 26 59 28 84 79
学号:200815009* 班级:08软件3班 姓名:叶科良
排序好的数组为:
10 11 23 26 28 45 56 59 79 84

源代码如下:
***************************************************
package testBubble;

import java.io.Reader;
import java.util.Scanner;

/**
*
* @author yekeliang
*/
public class TestBubble {


private CommandLineBubbleRunner commandLineBubbleRunner;
private int arraySize;
private int[] intArray;
private StuInfo stuInfo;
private Info info;

/**
* 测试方法
* @param args
*/
public static void main(String[] args) {
TestBubble test = new TestBubble();
}

/**
* 构造方法
* 调用初始化学生数据、接收命令行整数、展示结果3个成员方法
*/
public TestBubble() {
initMemb();
initData();
runBubble();
showResult(this.getIntArray());
}

/**
* 初始化学生数据
*/
private void initData() {
stuInfo.setStuNum("200815009*");
stuInfo.setStuClass("08软件3班");
stuInfo.setStuName("叶科良");
info.setInputIntNumInfo("请输入您将要输入整数的个数:");
info.setInputIntInfo("请输入一串数字进行冒泡排序,注意:每次只输入一个,输完则回车");
info.setShowInputInfo("初始序列的数组为:");
info.setShowResultInfo("排序好的数组为:");
info.setInputErrorInfo("对不起,输入有误!请输入整数.");
}

/**
* 接收命令行整数,使用冒泡算法
*/
private void runBubble() {
try{
System.out.println(info.getInputIntNumInfo());
setArraySize(getCommandLineBubbleRunner().getArraySize());
System.out.println(info.getInputIntInfo());
setIntArray(getCommandLineBubbleRunner().getAcceptAsIntArray(getArraySize()));
System.out.println(info.getShowInputInfo());
getCommandLineBubbleRunner().showAcceptAsIntArray(getIntArray());
Bubble.quick(getIntArray());
} catch(java.util.InputMismatchException e) {
System.out.println(info.getInputErrorInfo());
}
}

/**
* 展示结果
*/
private void showResult(int intArray[]) {
System.out.println("
" + stuInfo.toString());
System.out.println(info.getShowResultInfo());
for (int i = 0; i < intArray.length; i++) {
System.out.print(intArray[i] + " ");
}
}




private void initMemb() {
stuInfo = new StuInfo();
info = new Info();
commandLineBubbleRunner = new CommandLineBubbleRunner();
}

public CommandLineBubbleRunner getCommandLineBubbleRunner() {
return commandLineBubbleRunner;
}

public void setCommandLineBubbleRunner(CommandLineBubbleRunner commandLineBubbleRunner) {
this.commandLineBubbleRunner = commandLineBubbleRunner;
}

public int getArraySize() {
return arraySize;
}

public void setArraySize(int arraySize) {
this.arraySize = arraySize;
}

public int[] getIntArray() {
return intArray;
}

public void setIntArray(int[] intArray) {
this.intArray = intArray;
}

private void getStuInfo() {}

}


/**
*
* @author 叶科良
*/
class CommandLineBubbleRunner {

public int num;//输入整数个数

/**
* 从命令行中读取需要输入的整数个数
* @return 需要输入的整数个数
*/
public int getArraySize() {
Scanner reader1 = new Scanner(System.in);
num = reader1.nextInt();
return num;
}

/**
* 指定数组大小,从命令行接收整数
* @param arraySize 数组大小
* @return 原始整数数组
*/
public int[] getAcceptAsIntArray(int arraySize) {
int[] acceptArray = new int[arraySize];
Scanner reader = new Scanner(System.in);
for (int i = 0; i < getNum(); i++) {
System.out.print((i + 1) + ":");
acceptArray[i] = reader.nextInt();
}
return acceptArray;
}

/**
* 打印原始输入数据
* @param intArray
*/
public void showAcceptAsIntArray(int[] intArray){
for (int i = 0; i < getNum(); i++) {
System.out.print(intArray[i] + " ");
}
}

/**
* 取得数组大小
* @return
*/
public int getNum() {
return num;
}

}

class Bubble {

/**
* 给定一个数组,使用冒泡算法进行排序
* @param acceptArray 给定的一个数组
* @return 排序好的数组
*/
public static int[] getResultAsIntArray(int[] acceptArray) {
int i, temp;
for (i = 0; i < (acceptArray.length - 1); i++) {//两两进行比较,符合条件的进行交换
if (acceptArray[i] > acceptArray[i + 1]) {
temp = acceptArray[i];
acceptArray[i] = acceptArray[i + 1];
acceptArray[i + 1] = temp;
}
}
return acceptArray;
}

/**
* 快速冒泡排序算法
* @param r 输入的整数数组
* @param first 数组第一个下标
* @param end 数组最后一个下标
* @return 排好序的整数数组
*/
public static int partition(int[] r, int first, int end) {
int i, j;
i = first;
j = end;
while (i < j) {
while (i < j && r[i] <= r[j]) {
j--;
}
if (i < j) {
int temp;
temp = r[i];
r[i] = r[j];
r[j] = temp;
}
}
return i;
}

public static void quick(int[] r, int first, int end) { //利用递归反复划分
if (first < end) {
int pivot = partition(r, first, end); //调用划分函数
quick(r, first, pivot - 1);
quick(r, pivot + 1, end);
}
}

public static int[] quick(int[] r){
quick(r,0,r.length-1);
return r;
}

}

class Info {

private String inputIntNumInfo;//提示用户输入整数个数的消息语句
private String inputIntInfo;//提示用户输入整数的消息语句
private String showInputInfo;//提示显示用户输入整数的消息语句
private String inputErrorInfo;//提示用户输入有误消息语句
private String showResultInfo;//提示显示排序结果

public String getInputIntNumInfo() {
return inputIntNumInfo;
}

public void setInputIntNumInfo(String inputIntNumInfo) {
this.inputIntNumInfo = inputIntNumInfo;
}

public String getInputIntInfo() {
return inputIntInfo;
}

public void setInputIntInfo(String inputIntInfo) {
this.inputIntInfo = inputIntInfo;
}

public String getShowInputInfo() {
return showInputInfo;
}

public void setShowInputInfo(String showInputInfo) {
this.showInputInfo = showInputInfo;
}

public String getInputErrorInfo() {
return inputErrorInfo;
}

public void setInputErrorInfo(String inputErrorInfo) {
this.inputErrorInfo = inputErrorInfo;
}

public String getShowResultInfo() {
return showResultInfo;
}

public void setShowResultInfo(String showResultInfo) {
this.showResultInfo = showResultInfo;
}
}

class StuInfo {

private String stuNum;//学生学号
private String stuName;//学生姓名
private String stuClass;//学生班级

@Override
public String toString() {
return "学号:" + getStuNum() + " 班级:" + getStuClass() + " 姓名:" + getStuName();
}

public String getStuNum() {
return stuNum;
}

public void setStuNum(String stuNum) {
this.stuNum = stuNum;
}

public String getStuName() {
return stuName;
}

public void setStuName(String stuName) {
this.stuName = stuName;
}

public String getStuClass() {
return stuClass;
}

public void setStuClass(String stuClass) {
this.stuClass = stuClass;
}

}

方法一: package basic.javastu; public class NumberTest {
/** * 实现冒泡程序1 */ public static void main(String[] args) { // TODO Auto-generated method stub

int[] numb=new int[]{3,42,57,1,32,24};

int len=numb.length;

int i,j;

int temp;

System.out.println("排序前的数组各个值:");

for(i=0;i<len;i++)

{

System.out.print(numb[i]+"");

}

System.out.println("
");

for(i=1;i<=len;i++)

{

for(j=len-1;j>=1;j--)

{

if(numb[j]>numb[j-1])

{

temp=numb[j];

numb[j]=numb[j-1];

numb[j-1]=temp;

}

}

}

System.out.println("排序后的数组各个值:");

for(i=0;i<len;i++)

{

System.out.print(numb[i]+"");

}



}
}
方法二: package basic.javastu; public class NumberTest2 {
/** * 实现冒泡程序2 */ public static void main(String[] args) { // TODO Auto-generated method stub

int[] numb=new int[]{3,42,57,1,32,24};

int leng=numb.length;

System.out.println("排序前的数组各个值:");

for(int i=0;i<leng;i++)

{

System.out.print(numb[i]+"");

}

System.out.println("
");

swap(numb);

System.out.println("数组排序后:"); for(int i=0;i<leng;i++)
{
System.out.print(numb[i]+"");
} }

private static int[] swap(int[] numb) { int n2[]=numb; int len=n2.length; int i,j; int temp; for(i=1;i<=len;i++)
{
for(j=len-1;j>=1;j--)
{
if(n2[j]>n2[j-1])
{
temp=n2[j];
n2[j]=n2[j-1];
n2[j-1]=temp;
}
}
} return n2; } }

方法三: package basic.javastu; public class NumberTest3 {
/** * 实现冒泡程序2 */ public static void main(String[] args) { // TODO Auto-generated method stub

int[] numb=new int[]{3,42,57,1,32,24};

int leng=numb.length;

System.out.println("排序前的数组各个值:");

for(int i=0;i<leng;i++)

{

System.out.print(numb[i]+"");

}

System.out.println("
");

swap(numb);

System.out.println("数组排序后:"); for(int i=0;i<leng;i++)
{
System.out.print(numb[i]+"");
} }

private static void swap(int[] numb) { int len=numb.length; int i,j; int temp; for(i=1;i<=len;i++)
{
for(j=len-1;j>=1;j--)
{
if(numb[j]>numb[j-1])
{
temp=numb[j];
numb[j]=numb[j-1];
numb[j-1]=temp;
}
}
} } }

Java中的ArrayList怎么进行冒泡排序
答:java中的ArrayList进行冒泡排序,主要是循环遍历取出数据,然后进行比较排序,如下代码:package com.qiu.lin.he;import java.util.ArrayList;public class Ceshi {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<Integer>();list.add(76);list.add(4);list.add(...

关于JAVA中的冒泡排序法???
答:package pck;//打开pck数据包 public class Bubble {//建立一个名为Bubble的类 public static void main(String args[]){//建立main函数 int nums[]={99,-10,100123,18,-978,5623,463,-9,287,49};//建立名为nums的数组,包含10个数,并为这10个数初始化值 int a,b,t;建立3个整型变量...

...写的冒泡排序的代码,在线等,急!一个JAVA冒泡排序的程序,类似于_百 ...
答:import java.util.Scanner;public class SortDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in);int choose;while (true) { System.out.println("请输入排序的规则:1从大到小;2从小到大");System.out.print("请输入你的选择");try { choose = Integer....

JAVA冒泡排序法
答:冒泡排序法思路 1:外层循环:控制它要走几次。假设你有5个数,那就要走4次,最后一次不用走,最后那个数已经在它位置了所以就要length-1次。2:内层循环:控制逐一比较,如果发现前一个数比后一个数大,则交换。注意!因为越比较长度就越小了,所以长度要length-1-i。

java定义一个整型数组将数组中的元素用冒泡排序法升序排序
答:请看:/* * 冒泡排序 */public class BubbleSort {public static void main(String[] args) {int[] arr={6,3,8,2,9,1};System.out.println("排序前数组为:");for(int num:arr){System.out.print(num+" ");}for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数for(int...

Java冒泡排序的原理?
答:冒泡排序是所欲排序算法里最好理解的了。1、排序算法:A)比较相邻的元素。如果第一个比第二个大,就交换他们两个。B)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。C)针对所有的元素重复以上的步骤,除了最后一个。D)持续每次对越来越少...

JAVA编程实现对数组{25.24.12.76.101.96.28}的排序。使用冒泡排序算法...
答:import java.util.Arrays;public class BubbleFinal { public static void main(String[] args) { int[] arr ={25,24,12,76,101,96,28};sortFinal(arr);} public static void sortFinal(int[] arr) { boolean sorted = true;for (int j = 0; j < arr.length - 1; j++) { sorted...

java中冒泡排序算法的详细解答以及程序?
答:实例说明 用冒泡排序方法对数组进行排序。 实例解析 交换排序的基本思想是两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 应用交换排序基本思想的主要排序方法有冒泡排序和快速排序。 冒泡排序 将被排序的记录数组 R[1..n] 垂直排列,每个记录 R[i] 看做...

求java的冒泡排序程序!!!急急
答:我的是冒泡算法的演示:public class MaoPao { public void text(int[] listNumber){ int n_length = listNumber.length;System.out.println("***冒泡算法演示***");System.out.print("未排序的序列:");print(listNumber);paixu(listNumber);} / 打印输出数组 / public void print(int[] l...

用Java中ArrayList类实现一个冒泡排序
答:java.util.Collections类中有 sort public static <T extends Comparable<? super T>> void sort(List<T> list)根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,...