java排序冒泡排序
Ⅰ 用java寫個冒泡排序
冒泡排序演算法:
int類型的數組:3 1 6 2 5
第一次循環:
1 3 6 2 5
1 3 6 2 5
1 3 2 6 5
1 3 2 5 6
第二次循環:
1 3 2 5
1 2 3 5
1 2 3 5
第三次循環:
1 2 3
1 2 3
。。。
演算法:取出最大的放在最後,下次就不用比較最後一個了。*/
publicclassBubbleSort{
publicstaticvoidmain(String[]args){
int[]a={3,1,6,2,5};
//開始排序
for(inti=a.length-1;i>0;i--){
for(intj=0;j<i;j++){
if(a[j]>a[j+1]){
//交換位置
inttemp;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//遍歷
for(inti=0;i<a.length;i++){
System.out.println(a[i]);
}
}
}
Ⅱ java冒泡排序的幾種寫法
冒泡排序的三種實現(Java)
網頁鏈接
Ⅲ java冒泡排序
要確保你輸入的是10個整數,不然arges[i](應該是args吧)肯定會造成數組越界
例如版,執行應該寫成:
java
test
1
3
5
4
2
6
10
8
9
7
改成權
int
N=arges.length;
int[]
a=new
int[N];
可以輸入任意多個數
Ⅳ JAVA冒泡排序
packageTest;
importjava.util.Arrays;
publicclassDemo1{
publicstaticvoidmain(String[]args){
[]a={2,1,3,9,7,10,8,11,17,6};
//System.out.println(Arrays.toString(a));
sortArr(a,a.length-1,0);
System.out.println(Arrays.toString(a));
sort(a);
System.out.println(Arrays.toString(a));
}
publicstaticvoidsortArr(int[]a,inti,intj){
if(j<i){
sortOne(a,i,j);
}else{
sortOne(a,--i,0);
}
}
publicstaticvoidsortOne(int[]a,inti,intj){
if(i==0)return;
if(a[j+1]<a[j]){
inttemp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
sortArr(a,i,++j);
}
publicstaticvoidsort(int[]a)
{
inttemp=0;
for(inti=a.length-1;i>0;--i)
{
for(intj=0;j<i;++j)
{
if(a[j+1]<a[j])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
}
上面代碼是從小到大排列
packageTest;
importjava.util.Arrays;
publicclassDemo1{
publicstaticvoidmain(String[]args){
Object[]a={2,1,3,9,7,10,8,11,17,6};
sortArr(a,a.length-1,0);
System.out.println(Arrays.toString(a));
Object[]b={'a','m','s','b','h','e'};
sortArr(b,b.length-1,0);
System.out.println(Arrays.toString(b));
}
publicstaticvoidsortArr(Object[]a,inti,intj){
if(j<i){
sortOne(a,i,j);
}else{
sortOne(a,--i,0);
}
}
publicstaticvoidsortOne(Object[]a,inti,intj){
if(i==0)return;
if(a[j+1]instanceofInteger){
if(Integer.valueOf(""+a[j+1])<Integer.valueOf(""+a[j])){
Objecttemp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}elseif(a[j+1]instanceofCharacter){
if(a[j+1].toString().charAt(0)<a[j].toString().charAt(0)){
Objecttemp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
sortArr(a,i,++j);
}
// publicstaticvoidsort(int[]a)
// {
// inttemp=0;
// for(inti=a.length-1;i>0;--i)
// {
// for(intj=0;j<i;++j)
// {
// if(a[j+1]<a[j])
// {
// temp=a[j];
// a[j]=a[j+1];
// a[j+1]=temp;
// }
// }
// }
// }
}
Ⅳ java中最簡單的方法冒泡排序
package bubble_sort;
import java.util.Scanner;
public class Sort {
/**
* 冒泡排序
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("請輸入要排序的個數:");
int counts = input.nextInt();
int[] temp = new int[counts];
for (int i = 0; i < counts; i++) {// 賦值
System.out.println("請輸入第" + (i + 1) + "數:");
temp[i] = input.nextInt();
}
for(int k=0, conversion=0;k<counts;k++){//降序
for(int j=0;j<(counts-1);j++){
if(temp[j]>temp[j+1]){
conversion=temp[j];
temp[j]=temp[j+1];
temp[j+1]=conversion;
}
}
}
System.out.println("降序後");
for(int g=0;g<counts;g++){//輸出
System.out.println(temp[g]);
}
for(int k=0, conversion=0;k<counts;k++){//升序
for(int j=0;j<(counts-1);j++){
if(temp[j]<temp[j+1]){
conversion=temp[j];
temp[j]=temp[j+1];
temp[j+1]=conversion;
}
}
}
System.out.println("升序後");
for(int g=0;g<counts;g++){//輸出
System.out.println(temp[g]);
}
String t=input.next();//為了運行結束後查看結果,進行停留
}
}
Ⅵ 用JAVA語言編寫一個冒泡排序法,要詳細的
我n年前上學用的,你看看把,呵呵。希望對你有幫助
public class Test
{
public void Sx(int[] t)
{
for(int i = 0;i < t.length;i++)
{
if(t[i] < 10)
{
System.out.print("0"+t[i]+" ");
}
else
{
System.out.print(t[i]+" ");
}
if((i+1) % 6 == 0)
{
System.out.println();
}
}
}
public static void main(String[] args)
{
Test m = new Test();
int a[] = new int[36];
out1: for(int i = 0;i < 36;i++)
{
a[i] = (int)(Math.random() * 36 + 1);
for(int j = 0; j < 36 && j != i;j++)
{
if(a[j] == a[i])
{
i--;
continue out1;
}
}
}
m.Sx(a);
System.out.println();
//Arrays.sort(a);
//冒泡法
int temp;
for(int i=0;i<a.length;i++){
for(int j=0;j+1<a.length-i;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
m.Sx(a);
}
}
Ⅶ java實現冒泡排序
你這樣抄寫,相當於只冒了襲一次泡,把最大的一個數,也就是最後一個數,找出來了,冒泡排序是要for循環里在嵌套一個for循環才能做出來的,外面的for循環控制冒泡多少次,裡面的循環找出每次的最大值。你這樣寫少了外面的那個for循環,相當於只找了一次最大值。
Ⅷ Java冒泡排序
這段代碼的核心是理解JAVA需要集合操作的寫法。
1、第一句,是獲取對象內部成員的句柄,句柄類似c++語言中的指針,只是指向對象,而不是對象本身
2、第二三句是為了修改集合對象內部的內容,此時你無法直接去修改它們(因為假如你只是修改了句柄指向的內容,對於集合來說它根本沒有發生任何變化)
3、集合提供的修改方法,比如set(i,obj),其內部的實現方式是數組,但封裝後沒有提供類似數組一樣的操作,如list[i]=obj,這種寫法。所以你沒法直接這么寫(但是C#語言就提供了這種寫法,所以你如果用C#就可以三句都用等於號賦值)
Ⅸ java冒泡排序詳細講解
依次復比較相鄰的兩個數,將小數制放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重復以上過程,直至最終完成排序。
由於在排序過程中總是小數往前放,大數往後放,相當於氣泡往上升,所以稱作冒泡排序。
for(int
j=0;j<=len-i-1;j++),冒泡排序比較相鄰的值,也就是a[j]和a[j+1]相比較
所以這段代碼從a[0]開始與後面的a[1]比較,如果a[1]小於
a[0]就換。不小於j++,a[1]和[a2]比較,以此類推,直到比到a[len-i-1]時,也就比到了最後一個數組了。上層循環就是控制數組比較的長度。
Ⅹ java 用冒泡排序法排序字元串數組
@org.junit.Test
publicvoidb(){
[]strs={"avcd","bdce","avcdf","cced","bdce"};
for(inti=0;i<strs.length;i++){
//第一個字元的ascii碼大,放前面
for(intj=i+1;j<strs.length;j++){
intnum=0;
compare(strs,i,j,num);
}
}
for(Stringstring:strs){
System.err.println(string);
}
}
/**
*@paramstrs
*@parami
*@paramnum
*/
privatevoidcompare(String[]strs,inti,intj,intnum){
//判斷2個字元串誰的長度最小,則以當前長度作為num+1的最大標准
if(strs[i].length()>=strs[j].length()){
if(num+1<=strs[j].length()){
if(strs[j].charAt(num)>strs[i].charAt(num)){
Stringtemp=strs[i];
strs[i]=strs[j];
strs[j]=temp;
//若相等,則判斷第二個
}elseif(strs[j].charAt(num)==strs[i].charAt(num)){
num++;
compare(strs,i,j,num);
}
}
}else{
if(num+1<=strs[i].length()){
if(strs[j].charAt(num)>strs[i].charAt(num)){
Stringtemp=strs[i];
strs[i]=strs[j];
strs[j]=temp;
//若相等,則判斷第二個
}elseif(strs[j].charAt(num)==strs[i].charAt(num)){
num++;
compare(strs,i,j,num);
}
}else{
//表示當前字元串內容都一致,strs[j]的長度大。則放前面。
Stringtemp=strs[i];
strs[i]=strs[j];
strs[j]=temp;
}
}
}