doit在java什么意思?什么叫java作用域变量
大家好,doit在java什么意思相信很多的网友都不是很明白,包括什么叫java作用域变量也是一样,不过没有关系,接下来就来为大家分享关于doit在java什么意思和什么叫java作用域变量的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
冒泡排序是什么意思
问题一:什么是冒泡排序法?冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
问题二:冒泡排列是什么意思?就是给你一些哗字,然后用算法把他从大到小排序。因为是大的往前一个个的放,就像水里的泡泡一样,故而的名。
问题三:“JAVA写冒泡排序”是什么意思? 10分按冒泡排序思想,有8颗豆子(大小不一)放在8袋子里,从第1个袋了拿出豆子,与第2个袋子里的豆子相比较,如果第2个袋子里豆处比第1个袋子的豆子大,就把第2个袋子里的豆子放入第1个袋子,把第1个袋子的豆子放入第2个袋子。然后,第1个袋子继续和第3个袋子比较。如果第2袋子的豆子不会比第1个袋子的大,就和第3个袋子比较,这样一一个下直到和所有的袋子比较过。之后第2个袋子也与第2个袋子以后的相比较过.......!
另外还要用到交换的方法:
代码主要是用循环嵌套:
public class NewMain{
public static void main(String[] args){
TODO code application logic here
int a[]={1,5,8,11,16,30,40,50,199};定义一个数组,也可写成 int[] a={1,5,8,11,16,30,40,50,199};
int c;用于交换用的
for(int i=0;ia[i]){进行交换
c=a[j];
a[j]=a[i];
a[i]=c;
}
}
System.out.println(a[i]);
}
}
问题四:冒泡排序法C语言解释 100分既然要用外行的话来回答,我就打个简单的比喻吧。
【比喻】
假如你是体育老师,你前面有一排随机站立的学生,10个,高矮不一。如果你要用冒泡排序的思路来让他们从低到高来排队,你可以这样。
第一遍:
从左往右,第一个跟第二个比较,高的那么换到右边,接着第2个跟第3个比较,高的再换到右边。这样以此类推,第一遍做完后,你能保证最高的那个被移动到了队列最后。比如说姚*明同学。
第二遍:
如果我是体育老师,姚*明可以去玩手机了(呵呵),因为,第一轮已经能保证他是最高的,且已经站到最后了。那么我只要对前9位同学,把第一遍的动作再做一遍,那么你就可以保证找出第2高的同学,移动到姚*明左边了。一次类推。
【短评】
所谓冒泡,就是模拟池塘里的小气泡。你可以假定小的往上跑的快,大的跑的慢。那么水底到水面上就形成了一串大小不同的泡泡。
【截图注释】
bubble_sort(A)函数名叫冒泡排序,需要传入一个数组A作为参数
{
for( i=1 to N-1)10个人,其实排9轮就好了,最后一轮就一个人不用排
{
haschang=false;用一个逻辑性变量记录排序过程中是否有数据交换,开始为false
for(j=1 to N-i)每一轮要排序的人数是递减的, i是递增,所以每一次内循环N-i递减
{
if(A[j]>A[j+1])如果A的第j个元素比后面那个大,就交换位置
{
temp=A[j];先把A[j]做个备份
A[j]=A[j+1];然后把A[j+1]装到A[j]中
A[j+1]=temp;最后把原来备份的temp放到A[j+1]实现交换
haschange=true;发生了数据交换,修改标识。
}
}
}
楼主好运。
问题五:这是冒泡排序法if语句里是什么意思 if(i[y-1]>i[y]){ temp=i[y-1]; i[y-1]=i[y]; i[y]=temp;}这里的if语句的意思是如果数组i中的数字i[y-1]大于i[y],那么这两个数字进行交换,花括号中的三条语句就是交换两个数字的操作。
至于为什么要这么交换两个数字,给你举个例子好了――比如说你有一瓶酱油和一瓶醋,如果你想把这两样东西的瓶子换一下,那么你必然需要借助一个空瓶子(也就是代码里的temp),然后先把酱油(或者醋)倒到空瓶子中去,再把醋倒到空了的酱油瓶中去,最后把空瓶子里的酱油倒到醋瓶子去,经过这三步你才完成了交换。那么这段代码就可以理解为:
if(i[y-1]>i[y]){ temp=i[y-1];将i[y-1](酱油)放到空瓶子temp中 i[y-1]=i[y];将i[y](醋)放到i[y]中 i[y]=temp;将空瓶子里的i[y-1]放到i[y]中}
问题六:冒泡排序和快速排序有什么区别冒泡排序是从最底层元素开始比较,(与其上的元素比较)
小于就往上再比,大于就交换,再用较小的往上比较,直到最高层,
第一次把最小的放到最上层,第二次把第二小的放到第二层,以次类推;
快速排序是先找到一个轴值,比较时把所有比轴值小的放到轴值的左边,
比轴值大的放到右边,再在两边各自选取轴值再按前面排序,直到完成.
纯手工操作,希望能够帮到你,谢谢采纳!!!
问题七:起泡排序和冒泡排序是不是一个概念 C实现冒泡排序算法
最简单的排序方法是冒泡排序方法。这种方法的基本思阀是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。这个算法可实现如下。
C语言程序:(TC 2.0通过) void doit(float* in,int count){ int x; int y; float temp; for(y=0;y(*(in+x-1))){ temp=(*(in+x-1));(*(in+x-1))=(*(in+x));(*(in+x))=temp;}}}}
问题八:冒泡排序的中心思想冒泡排序(BubbleSort)的基本鼎念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为1,2,...10-i。
全文看百科
baike.baidu/view/254413
什么叫java作用域变量
在Java中,方法内的一个变量的作用域(包括方法参数)是从它定义的地方开始,直到它所在的作用域的结束位置。
比如,在方法开始定义了变量i,那么直到方法结束都不能再定义另一个i了。再比如在一个for语句中定义了变量i,那么在这个for循环内不能再有同名变量,但出了for循环之后,是可以再次定义的。这就是作用域不能嵌套的意思。
在c/c++中,作用域可以嵌套,比如:
int i;
{
int i;
{
......可以无限制地嵌套下去,这里每对大括号之间就是一个独立的作用域
}
}
再深入一点,在Java中,类与方法之间作用域是可以嵌套的,把类看做一个大的作用域,它定义的字段(或叫域)可以被方法中的同名字段所屏蔽,其行为类似于上面将的c/c++的作用域嵌套。
java 主方法怎么调用内部类的方法
System.out.println(x);//这个是55
System.out.println(In.x);//这个是9
楼主这两行是对的,楼上是不用兄弟认为人家这儿错了?
1,后面那个是无法做到的那个x是方法的局部变量,在进入方法时被推到栈里,方法结束后就出栈了。除非有方式可以跑一个在主方法中的线程监控当前栈中变量,就像是Debug一样,我也研究好久这个,不过没发现有。
2,
也像1一样没有侵入性,你可以用字节码框架去操作类,动态地改变方法的行为,也就是说你可以在main方法中用程序语言去改变doit(x)方法里所做的事情。
3,
再侵入点儿,你可以传进那个doit(int)方法一个Callback,你明白我意思?给你看个回调式:
public class HelloJava{
private interface Listener{
public void listenDoit(int x);
}
private static int x=55;
private class In{
private Listener listener;
private static final int x=9;
public In(Listener listener){this.listener=listener;}
public void doit(int x){
listener.listenDoit(x);
x=6;//这个X和上一行的应该是同一个吧?怎么在主方法里输出这个量?
listener.listenDoit(x);
HelloJava.this.x++;
}
}
public static void main(String[] args){
System.out.println(x);//这个是55
System.out.println(In.x);//这个是9
In in=new HelloJava().new In(new Listener(){
@Override
public void listenDoit(int x){
System.out.println(x);
}});
in.doit(0);
System.out.println(x);//这个是55
System.out.println(In.x);//这个是10
}
}
还有许多方式可以做到,比如代理模式等等,不过都大同小异。该方法好处是不改变方法的原定义模型。如返回值从void改成int,如果doit的返回值本身就是String,要返回个其他的东西,怎么去改变返回值完成?
另外运行一下会发现最后两行输出不是55
10,
而是56,
9,你就知道HelloJava.this.x++;做的是什么了。
4,然后就是楼上朋友们都说的方式,返回值。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!