java中数组的常见操作
来源:互联网 发布:伴奏降调软件手机 编辑:程序博客网 时间:2024/05/16 18:59
数组的常见操作:
1.遍历
int[] array = {1,23,5,2323,43,56};for(iint x = 0; x < array.length; x++){ System.out.println("array["+x+"] =" + "["+ array[x] + "]");}
2.最值
/*max和min分别用了记录索引和值的不同方式,具体使用哪个,根据个人喜好*//* max变量的意思是,当前最大值对应的索引值*/public int getMax(int[] array){int max = 0;for(int x = 1; x < array.length; x++){if( array[x] > array[max]){max = x;}}return array[max];}/*min代表的是最小的值*/public int getMin(int[] array){int min = array[0];for(int x = 1; x < array.length; x++){if(array[x] < min){min = array[x];}}return min;}
3.排序
1> 选择排序
选择排序的过程图解:
示例代码:
/*选择排序:原理:1.第一轮比较: 取数组中的第一个元素,与其后面的每一个元素进行比较,如果后面的元素比该元素小, 位置互换,然后继续用该位置的元素与后面的元素比较,直到数组末尾;经过一轮比较后, 数组的0索引对应的元素一定是该数组中最小的一个;2.第二轮比较用数组中的索引1的元素执行1的步骤,当第二轮执行完后,该位置的元素为第二小, 后面的元素同理,就可以完成数组的排序。*/public void selectorSort(int[] array){//x < array.length-1//最后一个元素没有比较的意义,所以减一for(int x = 0; x < array.length-1; x++){for(y = x+1; y < array.length; y++){if(array[y] < array[x]){swap(array,x,y);}}}}private void swap(int[] array, int x, int y){int temp = array[x];array[x] = array[y];array[y] = temp;}优化后的代码:
/*记录小的数值的索引位置,当一轮比较完毕后,进行一次换位操作,执行过程减少位置交换的次数,来提高效率。*/public static void selectorSort(int[] array){int tempIndex;for(int x = 0; x < array.length-1;x++){tempIndex = x;for(int y = x+1; y < array.length; y++){if(array[y] < array[tempIndex]){tempIndex = y;}}if(tempIndex != x){swap(array,x,tempIndex);}}}
2> 冒泡排序
冒泡排序图解:
示例代码:
/*冒泡排序一*/public void bubbleSort(int[] array){for(int x = 0; x < array.length-1; x++){for(int y = 0; y < array.length-1-x;y++){if(array[y] > array[y+1]){swap(array,y,y+1);}}}}/*冒泡排序二*/public void bubbleSort(){for(int x = array.length-1; x > 0; x--){for(int y = 0; y < x; y++){if(array[y] > array[y+1]){swap(array,y,y+1);}}}}4.折半查找
/*折半查找1.如果找到查询的key,返回该关键字在数组中的位置;2.如果没找到,则返回该查找key所在数组中的负的插入点减1的位置。*/public int binarySearch(int[] array, int key){int low = 0;int high = array.length-1;int mid;while(low <= high){mid = (low + high)>>1;if(array[mid] > key){high = mid-1;}else if(array[mid] < key){low = mid+1;}else{return mid;}}return -low-1;}/*面试题:给定一个有序的数组,如果往该数组中添加一个元素,并保证该数组依然有序,那么这个元素的添加位置的索引如何获取?解答:利用折半查找的原理,查找该元素需要添加的索引位置。*/
0 0
- java中数组的常见操作
- 黑马程序员之java中数组的常见操作1
- 黑马程序员之java中数组的常见操作2
- 【java笔记】数组、数组的常见操作
- Js中数组的常见操作
- java中的数组的常见操作问题
- Java中一维数组的常见操作
- 数组的常见操作
- 数组的常见操作
- 数组的常见操作
- 数组的常见操作
- 数组的常见操作
- Java数组中常见的面试题
- Java数组中常见的排序算法
- Java数组中常见的面试题
- Java--数组常见操作:遍历
- java中常见的文件操作
- JAVA中常见的违规操作
- 方法中的参数的问题
- 【设计模式基础】行为模式 - 3 - 职责链(Chain of responsibility)
- git
- uafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in main.obj
- js修改原型的属性
- java中数组的常见操作
- 值类型 引用类型在存储时的区别
- 学习总结-环境配置,数据类型,数组
- FusionCharts封装-单系列图
- FusionCharts封装-单系列图组合
- uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)"解决办法
- 蔡勒(Zeller)公式
- Android之观察者ContentObserver
- 强大的Vim 编辑器