数组和冒泡排序
来源:互联网 发布:淘宝店名在哪里修改 编辑:程序博客网 时间:2024/06/03 17:52
1.数组的特点。
·数组是可以保存一组数据的一种数据结构,它本身也会占用一个内存地址,因此数组是引用类型
·一个数组中只能保存一种类型的数据,可以保存基本类型,也可以保存Object。一个int,一个String是不能同时保存在一个数组内的(如果是对象型数组,注意存放的每一个对象都必须被实例化)。
·数组的长度规定好即固定,无论其保存的数据是否填满数组
·数组一旦定义好就不可以修改长度,如果要修改就必须重新定义一个新数组或者引用其他的数组,因此数组的灵活性较差
·数组拥有边界检查,尝试获取不在数组范围内的值时,会抛出ArrayIndexOutOfBoundsException异常
2.数组的优缺点
·数组的优点是效率高
3.冒泡排序的算法。
·比较两个相邻的元素,将值大的元素交换至右端。
·依次比较相邻的两个数,将小数放在前面,大数放在后面。首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
//用二重循环求出二维数组b所有元素的和
int[][] b={{11},{21,22},{31,32,33}};
int sum=0;
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
sum+=b[i][j];
}
}
System.out.println(sum);
* 循环二分查找,返回第一次出现该值的位置
* @param array 已排序的数组
* @param findValue 需要找的值
* @return 值在数组中的位置,从0开始。找不到返回-1
*/
/*int[] array={1,2,3,4,5,6,7,8,9,10};
System.out.println(searchLoop(array, 9));
}
public static int searchLoop(int[] array, int findValue) {
// 如果数组为空,直接返回-1,即查找失败
if (array == null) {
return -1;
}
// 起始位置
int start = 0;
// 结束位置
int end = array.length - 1;
while (start <= end) {
// 中间位置
int middle = (start + end) / 2;
// 中值
int middleValue = array[middle];
if (findValue == middleValue) {
// 等于中值直接返回
return middle;
} else if (findValue < middleValue) {
// 小于中值时在中值前面找
end = middle - 1;
} else {
// 大于中值在中值后面找
start = middle + 1;
}
}
// 返回-1,即查找失败
return -1;*/
数组逆序操作:定义长度为10的数组,将数组元素对调,并输出对调前后的结果。
思路:把0索引和arr.length-1的元素交换,把1索引和arr.length-2的元素交换…..
只要交换到arr.length/2的时候即可。
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};int newArr[]=selectArr(oldArr);
for(int i:newArr){
System.out.print(i+" ");
}
}
// 去掉数组中值为0的元素的方法
private static int[] selectArr(int[] arr) {
// 1.计算数组中元素不为0的个数
int count=0;
for(int i:arr){
if(i!=0){
count++;
}
}
// 2.创建一个新数组,长度为count
int newArr[]=new int[count];
// 3.复制不为0的元素到新数组中
int size=0;
for(int i:arr){
if(i!=0){
newArr[size++]=i;
}
}
return newArr;
}
}
- 数组和冒泡排序
- 数组冒泡排序和字符串冒泡排序
- 二维数组和冒泡排序
- 冒泡排序数字数组和字符串数组
- 数组的选择排序和冒泡排序
- 数组选择排序和冒泡排序
- 数组---冒泡排序和选择排序
- 数组冒泡排序 和 快速排序
- java之数组冒泡排序和list冒泡排序
- 数组组合和冒泡排序JS版
- C#冒泡排序和数组反转
- JAVA数组选择和冒泡排序
- 数组的冒泡排序和折半查找
- 03_java数组和冒泡排序
- 数组的折半查找和冒泡排序
- 数组去重和冒泡排序
- 通用冒泡排序和指针数组
- 打印数组从小到大排列和冒泡排序
- [LeetCode] 119. Pascal's Triangle II
- Latex之IEEE
- Spark性能优化指南,超详细
- 3.equals()和==的区别
- Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题
- 数组和冒泡排序
- 【PAT】甲级1009
- 类的继承
- android_SDK_API
- Android基本组建与布局
- HTML实战项目总结(一)
- 编程之美2.9-斐波那契(Fibonacci)数列
- (链)栈的基本操作 C++
- Segmentation fault in Linux(一)