public class maopao { public static void main(String[] args) { int i,j; int array[]={3,10,9,2,3}; int k=array.length; for(i=k-1;i>0;i--) for(j=0;j<i;j++) if(array[j]>array[j+1]) { int t; t = array[j]; array[j] = array[j+1]; array[j+1] = t; } for(i=0;i<k;i++) System.out.print(array[i]+" ");
} } 这是用冒泡写的。 也是新手。共同进步吧。
比较排序 public static int[] sort(int[] ns){ int t; for(int j= 0;j<ns.length;j++){ for(int i = j+1;i<ns.length;i++){ if(ns[i]<=ns[j]){ t = ns[i];ns[i]=ns[j];ns[j]=t; } } } return ns; }
import java.util.Arrays;public class ArraySort {
public static void main(String[] args) {
int[] a={3,10,9,2,3};
Arrays.sort(a);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}测试出结果为:
2
3
3
9
10
package com;public class ArrarySort {
public int[] arrarySort(int[] arr)
{
for(int i=1;i<arr.length;i++)
{
for(int j=0;j<i;j++)
{
if(arr[i]>arr[j])
{
arr[i]=arr[j];
int temp=arr[i];
arr[j]=temp;
}
}
}
return arr;
}}package com;public class Test {
public static void main(String[] args)
{
ArrarySort object1=new ArrarySort();
int []arr1=new int[]{3,10,9,2,3};
System.out.println(object1.arrarySort(arr1));
}
}
public class QuickSort {
public static int[] QuickSort(int[] pData, int left, int right) {
int i= left, j= right;
int middle, strTemp;
middle = pData[(left + right) / 2];
do {
while ((pData[i] < middle) && (i < right))
i++;
while ((pData[j] > middle) && (j > left))
j--;
if (i <= j) {
strTemp = pData[i];
pData[i] = pData[j];
pData[j] = strTemp;
i++;
j--;
}
} while (i <= j);
if (left < j) {
QuickSort(pData, left, j);
}
if (right > i)
QuickSort(pData, i, right);
return pData;
}
public static void main(String[] argv) {
int[] pData = { 3,10,9,2,3 };
int[] newData = QuickSort(pData, 0, pData.length - 1);
for(int data : newData){
System.out.print(data+ " ");
}
}
}
int temp=arr[i];
arr[j]=temp;这三行代码,你好好看看,应该怎样修改
if(arr[i]>arr[j])
{
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
看看上面这三行跟你的有什么不同,你可以举个实际一点的例子。
int temp=arr[i];
arr[j]=temp;
这里错了
嗯,如果知道气愤,而且自己写了一个,那说明你有能力和信心把 Java 学好,呵呵。你代码的只在一个地方错了,只需要换换位置就可以了。先看看你的代码:1. arr[i] = arr[j];
2. int temp = arr[i];
3. arr[j] = temp;假设 arr[i] = 3, arr[j] = 10
执行完第一行后 arr[i] = 10, arr[j] = 10
执行完第二行后 temp = 10, arr[i] = 10, arr[j] = 10
执行完第三行后 temp = 10, arr[i] = 10, arr[j] = 10很显然是不正确的。需要交换两个变量的值,需要使用临时变量来接收其中的一个变量。你的代码只需要把第 2 行与第 1 行换个位置改成这样就可以了:int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;另外 if 中使用的是 arr[i] > arr[j] 因此排序结果是倒序的,如果想要顺序改成 arr[i] < arr[j] 就可以了。最后还要说一句,自己先把代码写一遍、调试一下,实在搞不明白再来发帖提问,这样对于你学习帮助比较大。
public class maopao
{
public static void main(String[] args)
{
int i,j;
int array[]={3,10,9,2,3};
int k=array.length;
for(i=k-1;i>0;i--)
for(j=0;j<i;j++)
if(array[j]>array[j+1])
{
int t;
t = array[j];
array[j] = array[j+1];
array[j+1] = t;
}
for(i=0;i<k;i++)
System.out.print(array[i]+" ");
}
}
这是用冒泡写的。
也是新手。共同进步吧。
public static int[] sort(int[] ns){
int t;
for(int j= 0;j<ns.length;j++){
for(int i = j+1;i<ns.length;i++){
if(ns[i]<=ns[j]){
t = ns[i];ns[i]=ns[j];ns[j]=t;
}
}
}
return ns;
}
你的循环写错了 for(int j=0;j<i;j++) 改成 for(int j=i+1;j<arr.length;j++)
int temp=A[i];
A[i]=A[j];
A[j]=temp;
或者可以这样,假如数组为A,则:
A[i]=A[i]+A[j];
A[j]=A[i]-A[j];
A[i]=A[i]-A[j];