初学者:java有序数组插值
来源:互联网 发布:c获取网卡mac地址 编辑:程序博客网 时间:2024/06/11 13:26
题目:有(无)序数组arr[],插入数字key,要求插入一个数值使得数组有序。
问题分析:第一步:先找到要插值的位置position
第二步:新建数组放插入值后的数组
第三步:运行
难点:1、如果数组非有序,先排序(折半查找法比较优)
2、要新建一个数组存储
3、输出时,由于java不能输出整个数组,需要用到循环输出数组或者使用Arrays.toString语句,使用上述语句记得加以下语句在代码最前面 import java.util.Arrays;
代码实现:
import java.util.Arrays;class ArrayDemo{ public static void main(String[] args) { int arr[]={121,4654,32,65,45,-12,64}; System.out.print("排序前"); bianli(arr); paixuyouhua(arr); System.out.print("排序后"); bianli(arr); System.out.print("插入数字后数组为") ; insert(arr,63);//插入数字 63 } //遍历数组,美观~ public static void bianli(int [] arry) { System.out.print("["); for(int x=0;x<arry.length;x++) { if(x!=arry.length-1) System.out.print(arry[x]+","); else System.out.println(arry[x]+"]"); } } //定义元素交换函数swap() public static void swap(int arr[],int a,int b) { if(arr[a]>arr[b]) { int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } } //数组排序 public static void paixuyouhua(int []arr) { for (int x =0;x<arr.length-1 ;x++ ) { int num = arr[x]; int index = x; for (int y=x+1;y<arr.length ;y++ ) { if( num>arr[y]) { num=arr[y]; index=y; } } if(index!=x) swap (arr,x,index); } } //定义数组折半查找函数halfSearch_1() public static int halfSearch_1 (int arr[],int num) { int max,mid,min; max=arr.length; min=0; for (int x=0;x<arr.length ;x++ ) { //折半查找插入数的位置 while(max>=min) { mid=(max+min)>>1; if(arr[mid]<num) min=mid+1; else if(arr[mid]>num) max=mid-1; } } return max; } //另一种折半查找函数,只是循环条件不同 public static int halfSearch(int arr[],int key) { int max,mid,min; max=arr.length-1; min=0; mid=(min+max)/2; while(arr[mid]!=key)//与上面面那种折半的循环条件语句不同 { if(key>arr[mid]) min=mid+1; else if(key<arr[mid]) max=mid-1; if(min>max) return -1; mid=(max+min)/2; } return mid; } public static int[] insert(int arr[],int key) { int position = halfSearch_1(arr,key)+1 ; int arry[]=new int [arr.length+1]; for(int x=0;x<arry.length;x++) { if(x<position) arry[x]=arr[x]; else if (x>position) arry[x]=arr[x-1]; else arry[position]=key; } System.out.println(Arrays.toString(arry)); return arry;//返回数组,方便以后处理 }}
运行结果:
阅读全文
0 0
- 初学者:java有序数组插值
- 有序表查询之二:java实现插值查询
- 有序表查找_插值查找
- PHP有序表查找----插值查找
- 有序插入时,数组与链表效率比较
- java数据结构-有序数组
- java有序数组
- Java有序数组
- java实现有序数组
- ANSYS数组插值
- Java合并两个有序数组
- Java有序数组的实现
- 点数组平滑插值
- java将两个有序数组合并成一个有序数组
- 有序表查找 ---二分查找、插值查找
- java数据结构 数组与有序数组
- java script的数组【初学者】
- 循环有序数组查找值
- [推荐算法]ItemCF,基于物品的协同过滤算法
- Linux 09-压缩与备份
- Git-----Git中创建与合并分支
- PAT甲级1012
- Python-基础学习笔记(四)
- 初学者:java有序数组插值
- JAVA——网络编程(1):Java编写简单的UDP网络程序
- [BZOJ3897]Power/[JZOJ3334]高富帅的日程表
- Maven项目同时使用lib下的Jar包
- [推荐算法]UserCF,基于用户的协同过滤算法
- 总结5种比较高效常用的排序算法
- POJ 2373 Dividing the Path
- 排序算法总结(2)--插入排序
- 哈希曼的数据结构的代码(课堂代码)