我在做奇偶排序时遇到的问题
这是核心代码
public void oddAndEvensort()
{int j=0;; //i 为数组的长度
for(j=0;j<i;j++)
{
for( int m=1;m<i-2;m=m+2)
{ long temp1;
if(arr[m]>arr[m+2])
arr[m]=arr[m+2];
temp1=arr[m];
arr[m+2]=temp1;
}
for(int n=2;n<i-2;n=n+2)
{ long temp2;
if(arr[n]>arr[n+2])
arr[n+2]=arr[n];
temp2=arr[n+2];
arr[n]=temp2;
}
}
System.out.println("the length of arr is "+i);
}
为什么只和一个数比较呢,谁能帮我改改,谢谢了
这是核心代码
public void oddAndEvensort()
{int j=0;; //i 为数组的长度
for(j=0;j<i;j++)
{
for( int m=1;m<i-2;m=m+2)
{ long temp1;
if(arr[m]>arr[m+2])
arr[m]=arr[m+2];
temp1=arr[m];
arr[m+2]=temp1;
}
for(int n=2;n<i-2;n=n+2)
{ long temp2;
if(arr[n]>arr[n+2])
arr[n+2]=arr[n];
temp2=arr[n+2];
arr[n]=temp2;
}
}
System.out.println("the length of arr is "+i);
}
为什么只和一个数比较呢,谁能帮我改改,谢谢了
public class SortTest
{
private long[] arr = { 110,234,23,43,1, 2, 3, 4, 9, 8, 7, 6 }; /**
* @param args
*/
public static void main(String[] args)
{
(new SortTest()).oddAndEvensort();
} public void oddAndEvensort()
{
int j = 0;
int i = arr.length; for (int m = 0; m < arr.length; m++)
{
System.out.println(m + "---" + arr[m]);
}
// i 为数组的长度
for (j = 0; j < i; j++)
{
for (int m = j+1; m < i-2 ; m = m + 2)
{
long temp1;
if (arr[j + 1] > arr[m + 2])
{
temp1 = arr[j + 1];
arr[j + 1] = arr[m + 2];
arr[m + 2] = temp1;
}
}
for (int n = j+2; n < i; n = n + 2)
{
long temp2;
if (arr[j] > arr[n])
{
temp2 = arr[j];
arr[j] = arr[n];
arr[n] = temp2;
}
}
} for (int m = 0; m < arr.length; m++)
{
System.out.println(m + "---" + arr[m]);
}
}
}
16
12
32
21
20
33
15
the length of arry is 7
16123221203315after sort is
15
12
16
21
20
33
32
class oddAndEven
{
private int i;
int num;
private int maxsize;
private long arr[];
public oddAndEven(int max)
{
maxsize=max;
arr=new long[maxsize];
}
public void insert(int value)
{
arr[i]=value;
i++;
}
public void display()
{ int j=0;
for(j=0;j<i;j++)
{
System.out.println(arr[j]);
}
}
public void oddAndEvensort()
{int j=0;int num=arr.length ;
System.out.println("the length of arry is "+i);
for(int o=0;o<i;o++)
{
System.out.print(arr[o]);
}
for (j = 0;j< i;j++)
{
for (int m = j+1; m < i-2 ; m = m + 2)
{
long temp1;
if (arr[j + 1] > arr[m + 2])
{
temp1 = arr[j + 1];
arr[j + 1] = arr[m + 2];
arr[m + 2] = temp1;
}
}
for (int n = j+2; n < i; n = n + 2)
{
long temp2;
if (arr[j] > arr[n])
{
temp2 = arr[j];
arr[j] = arr[n];
arr[n] = temp2;
}
}
}
}
}
class oddAndEvenApp
{
public static void main(String[] args)
{
oddAndEven oe=new oddAndEven(7);
oe.insert( 16);
oe.insert( 12);
oe.insert( 32);
oe.insert( 21);
oe.insert( 20);
oe.insert( 33);
oe.insert( 15);
oe.display();
oe.oddAndEvensort() ;
System.out.println("after sort is ");
oe.display() ;
}
}
public static void main(String[] args) {
int[] arr = {99,87,5,4,86};
for (int i=0; i<arr.length; i ++) {
System.out.println("arr " +i+ " = " + arr[i] );
}
System.out.println("奇偶排序后-----------------------------");
int j,k;
for (int i=0; i<arr.length; i ++) {
// 奇数排序
for (j=1; j<arr.length - 1; j +=2) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
// 偶数排序
for (k=0; k<arr.length - 1; k +=2) {
if (arr[k] > arr[k + 1]) {
int temp = arr[k];
arr[k] = arr[k + 1];
arr[k + 1] = temp;
}
}
}
for (int i=0[code=Java]; i<arr.length; i ++) {
System.out.println("order arr " +i+ " = " + arr[i] );
}
}[/code]