编程语言
首页 > 编程语言> > 2022-07-15 第六组 润土 Java03数据结构学习笔记

2022-07-15 第六组 润土 Java03数据结构学习笔记

作者:互联网

数据结构:

          数组:最基本的数据结构(线性表)
          链表:单向链表,双向链表
          树:二叉树
          图:深度优先遍历、广度优先遍历
  查找:
          线性查找
          折半查找
  排序:
        冒泡排序*
        快速排序
        插入排序*
        选择排序*
        希尔排序
        堆排序
        归并排序
        桶排序

1、查找

线性查找:

    int [] arr=new int []{1,58,46,33,10,5,-58};
    Scanner sc=new Scanner(System.in);
    System.out.print("请输入一个数:");
    int number=sc.nextInt();
    int j=-1;
    for(int I=0; i<arr.length; i++){//循环遍历数组,利用j存储下标来输出提示等。
        if(arr[i]==number){
            j=i;
        }
    }
    if(j==-1){
        System.out.print("你要找的数是:"+number+" 在目标数组不存在");
    } else if (j!=-1) {
        System.out.print("你要找的数是:"+number+" 在目标数组中的下标是:"+j);
    }

折半查找:

    int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7};
    Scanner sc = new Scanner(System.in);
    System.out.print("请输入一个数字:");
    int number = sc.nextInt();
    int left = 0, right = arr.length - 1;//两个下标
    if (number < arr[left] || number > arr[right]) {
        System.out.println("数字不存在");
    } else {
        int res = -1;
        while (left <= right) {
            int middle=(left+right)/2;
            if(arr[middle]==number){
                res=middle;break;
            } else if (number<arr[middle]) {
                right=middle-1;
            }else {
                left=middle+1;
            }
        }
        System.out.print("下标:"+res);
    }

2、排序

冒泡排序:
     int  [] arr=new int []{1,58,46,33,10,5,-8};
     int i=0,j=0;
     while(i<(arr.length-1)){
         while (j< (arr.length-(i+1))){
            if(arr[j]>arr[j+1]){
                int max;
                max=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=max;
            }
            j++;
        }
        j=0;
        i++;
    }
    int n=0;
    System.out.println("long "+arr.length);
    while(n< arr.length){
        System.out.print(arr[n]+" ");
        n++;
    }

选择排序:
    int [] arr=new int[]{1,25,48,12,10,-8,127,56};
    for(int i=0;i<arr.length-1;i++){
        int min=i;
        int temp=arr[i];
        for(int j=(i+1);j<arr.length;j++){
            if(arr[i]>arr[j]){
                arr[i]=arr[j];
                min=j;
            }
        }
        arr[min]=temp;
        System.out.print("第"+(i+1)+"次:");
        for (int n=0;n<arr.length;n++){
            System.out.print(arr[n]+" ");
        }
        System.out.println();
    }

插入排序:
   int [] arr=new int[]{10,5,2,18,3,50,100,-1};
   for(int i=0;i<arr.length-1;i++){
       int min=arr[i+1];
       for(int k=i;k>0;k--){
           if(min<arr[k]){
               for(int j=i;j>k-1;j++){
                   arr[j]=arr[j-1];
               }
               break;
           }
       }
   }

标签:arr,15,Java03,int,System,润土,new,排序,out
来源: https://www.cnblogs.com/mamuxiansheng/p/16483349.html