当前位置:   article > 正文

【JavaSE】java刷题--数组练习

【JavaSE】java刷题--数组练习

前言

本篇讲解了一些数组相关题目(主要以代码的形式呈现),主要目的在于巩固数组相关知识。

上一篇 数组 讲解了一维数组和二维数组的基础知识~

欢迎关注个人主页逸狼

创造不易,可以点点赞吗~

如有错误,欢迎指出~

题1:实现toString的功能

将数组元素以字符串的形式输出在屏幕上

思路

首先要判断空指针和空数组的情况,利用字符串拼接实现toString功能

  1. //实现自己的数组转成字符串
  2. public static String myToString(int[] array){
  3. //判断空指针情况 (没有指向对象)
  4. if(array==null){
  5. return null;
  6. }
  7. //判断空数组情况 (指向的对象为空)
  8. if(array.length==0){
  9. return "[]";
  10. }
  11. String ret="[";
  12. for (int i = 0; i < array.length; i++) {
  13. ret=ret+array[i];
  14. if(i!= array.length-1){
  15. ret=ret+" ,";//字符串拼接
  16. }
  17. }
  18. ret+="]";
  19. return ret;
  20. }

题2:查找数组中的元素

顺序查找

如果数组比较大,效率低

  1. public static int checkNum(int[]array,int key){
  2. for (int i = 0; i < array.length; i++) {
  3. if(array[i]==key){
  4. return i;
  5. }
  6. }
  7. return -1;
  8. }

二分查找

效率高,前题是建立在当前数组是有序的

  1. //二分查找
  2. public static int zheBanFind(int[]array,int key){
  3. int right=0;
  4. int left= array.length-1;
  5. while(right<=left){
  6. //int mid=(right+left)/2;
  7. //int mid=(left+(left-righ)/2);//防止越界
  8. int mid=(right+left)>>>1;//右移一位,相当于除法
  9. if(array[mid]<key){
  10. right=mid+1;
  11. }
  12. if(array[mid]>key){
  13. left=mid-1;
  14. }
  15. if(array[mid]==key){
  16. return mid;
  17. }
  18. }
  19. return -1;
  20. }

题3:冒泡排序

  1. //java实现冒泡排序
  2. public static void BubbleSort(int[]array){
  3. boolean flag=true;
  4. for (int i = 0; i < array.length-1; i++) {
  5. //第一趟
  6. for (int j = 0; j < array.length-1-i; j++) {//减i表示每一趟都比上一趟少一次
  7. if(array[j]>array[j+1]){
  8. int tmp=array[j];
  9. array[j]=array[j+1];
  10. array[j+1]=tmp;
  11. flag=false;
  12. }
  13. }
  14. if(flag==true){
  15. break;
  16. }
  17. }
  18. }

题4:数组的逆置

  1. //数组的逆置
  2. public static void reverse(int[]array){
  3. int left=0;
  4. int right= array.length-1;
  5. while(left<right){
  6. int tmp=array[left];
  7. array[left]=array[right];
  8. array[right]=tmp;
  9. left++;
  10. right--;
  11. }
  12. }

题5:数组的拷贝

将数组重新拷贝一份,当然java中自带了拷贝方法copyOf(既可以拷贝,又可以扩容)

  1. }
  2. //数组的拷贝
  3. public static int[] copy1(int[]array){
  4. int[]tmp=new int[array.length];
  5. for (int i = 0; i < array.length; i++) {
  6. tmp[i]=array[i];
  7. }
  8. return tmp;
  9. }
  1. public static void main(String[] args) {
  2. int[]array={9,8,7,6,5,4,3,2};
  3. //Java里自带的拷贝
  4. /**
  5. * 可以看作是扩容
  6. */
  7. int[] cp=Arrays.copyOf(array,array.length*2);
  8. System.out.println(Arrays.toString(cp));
  9. //数组填充 可以局部填充
  10. int[] array4=new int[10];
  11. Arrays.fill(array4,1,6,666);//在数组array4中的【16)的位置填充666
  12. System.out.println(Arrays.toString(array4));
  13. }

题6:奇前偶后

将数组中奇数放在前面,偶数放在后面

  1. public static void fun3(int[] array) {
  2. int left = 0;
  3. int right = array.length - 1;
  4. while (left < right) {
  5. while (left < right && array[left] % 2 != 0) {//left<right防止越界
  6. //奇数
  7. left++;
  8. }
  9. while (left < right && array[right] % 2 == 0) {//left<right防止越界
  10. //偶数
  11. right--;
  12. }
  13. int tmp = array[left];
  14. array[left] = array[right];
  15. array[right] = tmp;
  16. }
  17. }
  18. public static void main(String[] args){
  19. int[] array = {1, 2, 3, 5, 6, 7};
  20. fun3(array);
  21. System.out.println(Arrays.toString(array));
  22. }

题7:找加数

  在数组{2,7,11,15}中找两个数相加的值为13,返回【2,11】

  1. public static int[]fun4(int[]array,int target){
  2. int[]ret={-1,-1};//没找到就直接返回-1
  3. for (int i = 0; i < array.length; i++) {
  4. for (int j = 0; j < array.length; j++) {
  5. if(array[i]+array[j]==target){
  6. ret[0]=array[i];
  7. ret[1]=array[j];
  8. }
  9. }
  10. }
  11. return ret;
  12. }
  13. public static void main(String[] args) {
  14. int[]array={2,7,11,15};
  15. int[]ret=fun4(array,4);
  16. System.out.println(Arrays.toString(ret));
  17. }

题8:判断是否有连续三个奇数

判断一个数组中是否存在连续3个奇数

  1. public static boolean fun8(int[]array){
  2. int count=0;
  3. for (int i = 0; i < array.length; i++) {
  4. if(array[i]%2!=0){
  5. count++;
  6. if(count==3){
  7. return true;
  8. }
  9. }
  10. else{
  11. count=0;
  12. }
  13. }
  14. return false;
  15. }
  16. public static void main(String[] args) {
  17. int[]array={1,2,3,0,7,9,6};
  18. System.out.println(fun8(array));
  19. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/357852
推荐阅读
相关标签
  

闽ICP备14008679号