自己写的,有点缺陷,一跑就无限loop了,,
要求写个双向的冒泡法,从左到右找出最大的,然后从右起第二个开始一直跑到最左找出最小的,,然后从左起第二个开始。。然后要大家帮忙了
public void bidiBubbleSort()
{
int left,right;
left=0; //left increasing bound
right=nElems-1; //right decreasing bound
while(left<=right)
{
for(int i=left;i<right;i++)
{
if(a[i]>a[i+1])
swap(i,i+1);
System.out.println(i);
}
right--;
for(int i=right;right>=left;i--)
{
if(a[i]>a[i+1])
swap(i,i+1);
System.out.println(i);
}
left++;
}
}
//------------------------------------------------------------ private void swap(int one, int two)
{
long temp = a[one];
a[one] = a[two];
a[two] = temp;
}
//------------------------------------------------------------
class BubbleSortApp
{
public static void main(String[] args)
{
int maxSize = 100; // array size
ArrayBub arr; // reference to array
arr = new ArrayBub(maxSize); // create the array arr.insert(77); // insert 10 items
arr.insert(99);
arr.insert(44);
arr.insert(55);
arr.insert(22);
arr.insert(88);
arr.insert(11);
arr.insert(00);
arr.insert(66);
arr.insert(66);
arr.display();
arr.bidiBubbleSort();
arr.display();
}
} //
要求写个双向的冒泡法,从左到右找出最大的,然后从右起第二个开始一直跑到最左找出最小的,,然后从左起第二个开始。。然后要大家帮忙了
public void bidiBubbleSort()
{
int left,right;
left=0; //left increasing bound
right=nElems-1; //right decreasing bound
while(left<=right)
{
for(int i=left;i<right;i++)
{
if(a[i]>a[i+1])
swap(i,i+1);
System.out.println(i);
}
right--;
for(int i=right;right>=left;i--)
{
if(a[i]>a[i+1])
swap(i,i+1);
System.out.println(i);
}
left++;
}
}
//------------------------------------------------------------ private void swap(int one, int two)
{
long temp = a[one];
a[one] = a[two];
a[two] = temp;
}
//------------------------------------------------------------
class BubbleSortApp
{
public static void main(String[] args)
{
int maxSize = 100; // array size
ArrayBub arr; // reference to array
arr = new ArrayBub(maxSize); // create the array arr.insert(77); // insert 10 items
arr.insert(99);
arr.insert(44);
arr.insert(55);
arr.insert(22);
arr.insert(88);
arr.insert(11);
arr.insert(00);
arr.insert(66);
arr.insert(66);
arr.display();
arr.bidiBubbleSort();
arr.display();
}
} //
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货