08 基本元素 数组和指针

来源:互联网 发布:scratch 2.0 for mac 编辑:程序博客网 时间:2024/06/05 14:56

重点在于循环嵌套的理解和使用

 

排序:

选择冒泡 二分法

选择:

class ArrayTest1

{

         publicstatic void main(String[] args)

         {

                   int[]arr = {5,1,6,4,2,8,9};

                  

                   intmax = 0;

                   inttemp;

 

                   for(int x = 0; x<arr.length-1 ; x++ )

                   {

                            for(int y = x+1 ; y <arr.length ; y++ )

                            {

                                     if(arr[y]>arr[x])

                                     {

                                               temp= arr[y];

                                               arr[y]= arr[x];

                                               arr[x]= temp;

                                     }

                            }

                   }

 

                   for(int a : arr )

                   {

                            sop(a);

                   }

         }

 

         publicstatic void swap(int a , int b)  //注意 这个函数是没有效果的

         {

                   inttemp;

 

                   temp= a;

                   a= b;

                   b=temp;

         }

        

         publicstatic void sop(Object obj)

         {

                   System.out.println(obj);

         }

}

冒泡

class ArrayTest2

{

         publicstatic void main(String[] args)

         {

                   int[]arr = {5,1,6,4,2,8,9};

                   inttemp;

 

                   for(int x = 0; x<arr.length ; x++ )

                   {

                            for(int y = arr.length-1 ; y > x ; y-- )

                            {

                                     if(arr[y]<arr[y-1])

                                     {

                                               temp= arr[y];

                                               arr[y]= arr[y-1];

                                               arr[y-1]= temp;

                                     }

                            }

                   }

 

                   for(int a : arr )

                   {

                            sop(a);

                   }

         }

 

         publicstatic void sop(Object obj)

         {

                   System.out.println(obj);

         }

}

外圈是大体控制内圈是精细控制

 

查找:

折半条件是对有序数组的查找

注意:

跳出循环的条件是max>=min

原因是如果没有则说明这个数字在数组中的某两个相邻数字之间

设这两个数字为a和b

则该数字c为:

a<c<b 那么a为min b为max mid在a上

当第一次比较的时候 c>a min向右移动此时mid min max重合都在b处

但依然没有找到

当第二次比较的时候 mid在b上 c<b max向左移动此时max<min 这样就可以跳出了说明没找到

class ArrayTest4

{

         publicstatic void main(String[] args)

         {

                   int[]arr = {3,1,5,4,2,9};

                   intflag = halfSearch(2,arr);

                   sop(flag);

         }

 

         publicstatic int halfSearch(int a, int[] arr)

         {

                   int[]myarr = selectSort(arr);

 

                   intmin,mid,max;

                   min= 0;

                   max= myarr.length-1;

                   mid= (min+max)/2;

 

//数组从大到小还是从小到大 是对程序有影响的 要理解才能变通!

                   while( a != myarr[mid])

                   {

                            if(a>myarr[mid])

                            {

                                     max= mid-1;

                            }

                            elseif (a<myarr[mid])

                            {

                                     min= mid+1;

                            }

 

                            if(min>max)

                            {

                                     return-1;

                            }

 

                            mid= (min+max)/2;

                   }

                            returnmid;

         }

 

         publicstatic int[] selectSort(int[] arr)

         {

                   inttemp;

 

                   for(int x = 0; x<arr.length-1 ; x++ )

                   {

                            for(int y = x+1 ; y <arr.length ; y++ )

                            {

                                     if(arr[y]>arr[x])

                                     {

                                               temp= arr[y];

                                               arr[y]= arr[x];

                                               arr[x]= temp;

                                     }

                            }

                   }

 

                   returnarr;

         }

 

         publicstatic void sop(Object obj)

         {

                   System.out.print(obj);

         }

}

进制转换(原理已述)

 

0 0