public class Coo{
public static void main(String[] arge){
int[] a = {4,3,2,1};
for(int i = 0; i < a.length - 1; i ++){
for(int j = 0; j < a.length - 1 - i; j ++){
if(a[j] > a[j + 1]){
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(int b : a){
System.out.print(b + "\t");
}
}
}
这段代码中的 定义的 i 和 j 分别代表什么 请高手帮忙解答 谢谢!
public static void main(String[] arge){
int[] a = {4,3,2,1};
for(int i = 0; i < a.length - 1; i ++){
for(int j = 0; j < a.length - 1 - i; j ++){
if(a[j] > a[j + 1]){
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(int b : a){
System.out.print(b + "\t");
}
}
}
这段代码中的 定义的 i 和 j 分别代表什么 请高手帮忙解答 谢谢!
for(int j = 0; j < a.length - 1 - i; j ++)同上
if(a[j] > a[j + 1])这句中的j有确切的值,表示数组小标
{
public static void main(String args[])
{
int arr[] = new int[args.length];
for(int i=0;i<args.length;i++)
{
arr[i] = Integer.parseInt(args[i]);
}
sort(arr);
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
}
private static void sort(int[] a)
{
for(int i=0;i<a.length;i++)
{
for(int j=i+1;j<a.length;j++)
{
if(a[j]<a[i])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
if(a[j]==a[i])
{
a[j]=a[i];
}
}
}
}
}
j是比较的次数(因为每冒泡一次即i增加一次就排好一个数,所以循环条件是j-1-i);
冒泡例子
public void bubbleSort(Array arr) {
int len = arr.length;
int out;
int in;
for(out = len-1;out > 1;out--) {//循环由右端不断向左移动
for(in = 0;in < out; in++) {//内部循环向右移动
if(arr[in] > arr[in+1]) {
int temp = arr[in]; //数据交换
arr[in] = arr[in+1];
arr[in+1] = temp;
}
}
}
}
你要先理解冒泡的意思,即一列数据,不断从未排序的列中选出最大的放到列末端,然后未排序的数据向左移一位(out--),在这里表现为out的右端为已排序数据,而out的左端为未排序数据。而这个in便是在out的左端,也就是未排序队伍中用来循环找最大(相对)数据的
推荐一本书:Java数据结构和算法.[美] Robert Lafore著(里面讲的很详细)
是以大泡下沉至最后一个元素来看的。
外层中的i是指一共要执行多少次内层的比较,这依照你的数组的大小而定。
而内层中的j则是用于比较0到j(j=1...N-1)之间的元素,并将每次内循环中的最大值给弄到本次比较的范围的最后。