冒泡排序的解读
来源:互联网 发布:网络上放妻协议 编辑:程序博客网 时间:2024/06/01 23:21
冒泡排序
第一个循环
如果是从小到大排序数组长度n
第一循环得到数组最后位置(正数下标n-1)是最大。
第二次循环是数组的倒数第二个(正数下标n-2)现有最大
...
第n-1次循环的时候到了第(正数下标n-(n-1)=1)最大
那么问题来了下标为1的比0的大,那么下标0的还要排吗??
显然由上可以知道
第一个for循环了共n-1次
现在对上面的第一次循环得到数组最后的位置是最大的进行细化,假如数组的最后个下标m=(n-1)
假如:下标0的数是最大的,有
下标0个和下标1个进行比较,最大数到下标1位置上,比较了1次
下标1个和下标2个进行比较,最大数到下标2位置上 ,比较了2次
....
当下标m-1和下标m进行比较,最大数到了m位置上,比较了m次(n-1)
因此第一个循环的最后的比较次数是n-1(n- 一)
第二次循环的数组比较的次数是n-2(n-二)
....
第n-1次循环的数组比较的次数是1(n-(n-1))
所以第二个for循环了n-上面的循环的次数
现在给出完整的例子
publicstaticbyte[] sortInt(){
Stringstr="196851432134";
byte[]bytes=str.getBytes();
for(inti= 1;i<bytes.length;i++) {
for(intj= 0;j<bytes.length-i;j++) {
if(bytes[j]<bytes[j+1]) {
bytetemp=bytes[j+1];
bytes[j+1]=bytes[j];
bytes[j]=temp;
}
}
}
returnbytes;
}
直接选择排序
第一次循.....
第二次循环...
如上
共循环了n-1次
第一次循环细化,
把下标为0的假设为最大值,和剩下的值进行比较n-1进行比较
即是
publicstatic byte[] showString(){
Stringstr="865651353";
byte[]bytes =str.getBytes();
for (inti = 1;i <bytes.length;i++) {
intindex=0;
for(intj = 1;j <= bytes.length-i;j++) {
if(bytes[j]>bytes[index]) {
index=j;
}
}
//经过上面的排序后index是下标最大的值的下标
bytetemp=bytes[bytes.length-i];
bytes[bytes.length-i] =bytes[index];
bytes[index]=temp;
}
returnbytes;
}
写给将来的自己,希望自己走的更远!!!!
阅读全文
0 0
- 冒泡排序的解读
- 解读PHP冒泡排序技巧
- C 冒泡排序 冒泡排序的优化
- 冒泡排序的效率
- 简单的冒泡排序
- 冒泡排序的实现
- 单链表的冒泡排序
- 冒泡排序的原理
- C++的冒泡排序
- 简单的冒泡排序
- java的冒泡排序
- 简单的冒泡排序
- bash的冒泡排序
- 基础的冒泡排序
- 冒泡排序的问题
- 冒泡排序的改进
- 单链表的冒泡排序
- 简单的冒泡排序
- Less中的命名空间
- 一个线程执行多个任务,要按照顺序执行
- 2017.11.15 c语言基础与提高(三)
- 算法导论(九)——图
- 《计算机网络》概述
- 冒泡排序的解读
- 机器学习理论篇之激活函数优劣比较
- (十一)、Java复习笔记之多线程(2)
- BootStrap + AngularJS 实现自定义分页
- Ajax提交与传统表单提交的区别说明
- 八数码广搜代码
- Hbase API使用(一)
- 洛谷 P1440 求m区间内的最小值
- docker常用命令