JAVA中的算法

线性排序

冒泡排序

package com.jiedada.creat;

public class maopao {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Randm arr=new Randm();
        int a[]=arr.randm(10, 10, 50);
        int temp;
        for(int i=0;i<a.length;i++)
        {
            for(int j=0;j<a.length-i-1;j++)
            {
                if(a[j+1]<a[j])
                {
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        for(int n:a) {
            System.out.print(n+" ");
        }

    }

}
View Code

1选择排序

思想在一串数字中找到最小的和初始位置交换顺序;

这次遇到很多问题。比如在for中i<a是跳出的是a-1但是并没有执行a-1;

交换时忘记。。

在random中生成的时[0,1)的数,如果我们需要其他数需要在上面做运算

选择排序方法

package com.jiedada.one;

import com.jiedada.creat.Randm;

public class One {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
       //Randm arr=new Randm();
        Randm arr=new Randm();
       int arr1[]= arr.randm(20,1,20);
       for(int i=0;i<arr1.length-1;i++)
       {
           int minIndex=i;
           int j;
           for(j=i+1;j<arr1.length;j++)
           {
               if(arr1[j]<arr1[minIndex])
               {
                   minIndex=j;
               }
           }
           int temp;
           temp=arr1[i];
           arr1[i]=arr1[minIndex];
           arr1[minIndex]=temp;
           
          
       }
       for(int n:arr1)
       {
           System.out.print(n+" ");
       }
    }



}
View Code

随机数生成代码

package com.jiedada.creat;

public class Randm {
     public int[] randm(int n,int min,int max)
     {
         int arr[]=new int[n];
         for(int i=0;i<n;i++)
         {
             arr[i]=(int)(Math.random()*(max-min+1));
             
         }
         return arr;
     }
}
View Code

 2插入排序

常见错误1交换写错,逻辑写错,循环结构写错,输出数组要用加强型for循环

package com.jiedada.creat;

public class CreatTwo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Randm arr=new Randm();
        int temp;
        int arr1[]= arr.randm(10, 10, 50);
    for(int i=1;i<arr1.length;i++)
    {
        for(int j=i;j>0;j--)
        {
            if(arr1[j]<arr1[j-1])
            {
                temp=arr1[j-1];
                arr1[j-1]=arr1[j];
                arr1[j]=temp;
            }
            else
            {
                break;
            }
        }
        
    }
    for(int n:arr1)
    {
        System.out.print(n+" ");
    }
    }

}
View Code

改进插入排序

package com.jiedada.creat;

public class CteatThree {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Randm arr=new Randm();
        int a[]=arr.randm(10, 10, 50);
        for(int i=1;i<a.length;i++)
        {
            int j;
            int s=a[i];
            for(j=i;j>0;j--)
            {
                if(s<a[j-1])
                {
                    a[j]=a[j-1];
                }
                else {
                    break;
                }
            }
            a[j]=s;
        }
        for(int n:a)
        {
            System.out.print(n+" ");
        }

    }

}
View Code

树形结构

图形结构

原文地址:https://www.cnblogs.com/xiaoruirui/p/10733877.html