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;
}
}
}