关于冒泡排序法,以及array.sort方法的问题 120
1.请问冒泡排序法的总循环次数为n(n-1)/2,时间复杂度为O(n^2),这两个结果是怎么算出来的?2.importjava。util。Arrays;String【】s...
1.请问冒泡排序法的总循环次数为n(n-1)/2,时间复杂度为O(n^2),这两个结果是怎么算出来的?
2.import java。util。Arrays;
String【】 s2={“Tom”,“jack”};
Arrays。sort(s1);
请问这里的sort方法如何排序? 展开
2.import java。util。Arrays;
String【】 s2={“Tom”,“jack”};
Arrays。sort(s1);
请问这里的sort方法如何排序? 展开
展开全部
1.
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序
n个数,第1轮,比较n-1次,得到最大(或最小)数
余下的n-1个数,比较n-2次,得到排第二位的数
以此此类推,最后比较1次,确定最后两个数的大小
故总循环次数:1+2+...+n-1=(1+n-1)(n-1)/2=n(n-1)/2
因为冒泡排序是采用双重循环,因此时间复杂度为O(n^2);
2.Arrays.sort()方法根据传出参数的长度的大小来判断用哪种排序方法,如果数组的长度小于7用冒泡排序,如果数组长度大于7,将数组分为两部分,前半部分和后半部分分别进行冒泡排序,最后再执行一次总的排序
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序
n个数,第1轮,比较n-1次,得到最大(或最小)数
余下的n-1个数,比较n-2次,得到排第二位的数
以此此类推,最后比较1次,确定最后两个数的大小
故总循环次数:1+2+...+n-1=(1+n-1)(n-1)/2=n(n-1)/2
因为冒泡排序是采用双重循环,因此时间复杂度为O(n^2);
2.Arrays.sort()方法根据传出参数的长度的大小来判断用哪种排序方法,如果数组的长度小于7用冒泡排序,如果数组长度大于7,将数组分为两部分,前半部分和后半部分分别进行冒泡排序,最后再执行一次总的排序
追问
如果是sort这里的字符串数组s2,如何排序?是按照字母表首字母排序吗?
追答
字符串比较是按字典顺序比较两个字符串。也就是先比较首字母,把两个字符串的首字母对应的ASCII码进行比较,小的排在前面,如果相同比较下一个字母,以此类推。
如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前,例如abc,排在abcd前面。
展开全部
1.算法分析 怎么学的啊....
冒泡排序 是用 两层循环 每个元素和她后面的元素作比较,如果大于后面的, 就互换....
a)总循环次数: 第一层循环要遍历所有的元素N个 ,第二层循环,要遍历他后面的那写(N-1)个
假如共有4个元素
第1个元素 要做比较的有 3个
第2个元素 要做比较的有 2个
第3个元素 要做比较的有 1个
第4个元素 要做比较的有 0个
所以 总循环次数是 4 * (4-1) /2 = 6个
b)时间复杂度为O(n^2) 是个虚数, 这个是要看循环的,是第一层循环的次数 * 第二层循环的次数
N * (N-1) 约等于 N^2
2.Arrays.sort是java提供的方法,可以查看源代码,以int[]为例,String[]也是,默认是按照升序,可以自定义规则
数组元素<7个的时候 用的是冒泡排序
数组元素>7个的时候 用的是快速排序
冒泡排序 是用 两层循环 每个元素和她后面的元素作比较,如果大于后面的, 就互换....
a)总循环次数: 第一层循环要遍历所有的元素N个 ,第二层循环,要遍历他后面的那写(N-1)个
假如共有4个元素
第1个元素 要做比较的有 3个
第2个元素 要做比较的有 2个
第3个元素 要做比较的有 1个
第4个元素 要做比较的有 0个
所以 总循环次数是 4 * (4-1) /2 = 6个
b)时间复杂度为O(n^2) 是个虚数, 这个是要看循环的,是第一层循环的次数 * 第二层循环的次数
N * (N-1) 约等于 N^2
2.Arrays.sort是java提供的方法,可以查看源代码,以int[]为例,String[]也是,默认是按照升序,可以自定义规则
数组元素<7个的时候 用的是冒泡排序
数组元素>7个的时候 用的是快速排序
追问
如果是sort这里的字符串数组s2,如何排序?是按照字母表首字母排序吗?
追答
对,默认的是按首字母排序,如果首字母相同,则按照第二个字母,依次类推
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第1个,由又循环的写法,计算出来
for(int i=0; i<arr.length; i++){
for(int j=j+1; j<arr.length;j++){
}
}
2
没错,直接传数组就可以排序
for(int i=0; i<arr.length; i++){
for(int j=j+1; j<arr.length;j++){
}
}
2
没错,直接传数组就可以排序
追问
如果是sort这里的字符串数组s2,如何排序?是按照字母表首字母排序吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
发了一个答案,被吞了,
在私信中给你发了一个,希望对你有帮助
在私信中给你发了一个,希望对你有帮助
追问
如果是sort这里的字符串数组s2,如何排序?是按照字母表首字母排序吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询