黑马程序员JAVA 050---060 小结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

051_数组(排序-选择排序)_黑马程序员_Java基础视频

052_数组(排序-冒泡排序)_黑马程序员_Java基础视频

数组的排序。

方法

1(选择排序,我以前都是有这种方法排序,感觉就是不是方便的排序手段)


选择排序的特点。

内循环结束一次,最值出现在头角标的位置上。 


2(冒泡法,做好的数组排序方法)

冒泡排序:相邻的两个元素进行比较,

如果符合条件换位。


class Demo
{
public static void main(String[] args)
{
//int[] arry={4,5,9,2,3,7,8,1,6,15,11,12,17,18,20};

int[] arry=new int[]{1};
//排序前
PrintDraw(arry);
//排序后
PaiXu(arry);
//Arrays.sort(arry);
System.out.println();
PrintDraw(arry);

}


public static void PaiXu(int[] arry)
{
for(int y=0;yfor(int x=0;x //-1:避免角标越界
{
if(arry[x]>arry[x+1])
{
arry[x]=arry[x]^arry[x+1];
arry[x+1]=arry[x]^arry[x+1];
arry[x]=arry[x]^arry[x+1];
}
}
}
}
public static void PrintDraw(int[] arry)
{
for(int x=0;x{
System.out.print(arry[x]+"\t");
}
}
}



//以上2个方法效率比较低,因为堆内存中换位置效率比较低的。

效率高的思想是,把角标放在栈内存的变量中,只把需要换换位置的元素换位置,可以提高效率。


3最快的排序法

希尔排序法

java 语言就怕你不会排序,,Arrays.sort(array)   就可以自动排序。

开发中要使用Arrays.sort(array)该句代码。

053_数组(排序-位置置换功能抽取)_黑马程序员_Java基础视频

054_数组(折半查找)_黑马程序员_Java基础视频

数组的另外一个操作那就是查找操作。

函数需要定义功能


//定义一个功能,获取Key第一次出现在数组中的位置,如果返回为-1,那么代表该key在数组中不存在。

public static int getIndex(int[] arry,int key)

{

for(int x=0;x

if(arry(x)==key)

return x;

}

return -1;

}

//折半查找,可以提高效率,但是必须保证该数组是有序数组。

//定义一个功能,使用折半查找。

public static int halfSearch(int[] arry,int key)

{

int max,min,mid;

min=0;

max=arry.length-1;

mid=(min+max)/2;

while(key!=mid)

{

if(key>arry[max])

min=mid+1;

else

max=mid-1;

mid=(min+max)>>2;

if(max<=min)

return(-1);

}

return(mid);

}


右移1位,等于除以2,,异或2次等于原值

练习:有一个有序的数组,想要将一个元素插入到该数组中,还要保证该数组是有序的。

如何获取该值的地址。用折中查找。


055_数组(十进制-二进制)_黑马程序员_Java基础视频


十进制转二进制

public static void toBin(int num)

{

StringBuffer sb=new StringBuffer();

while(num>0)

sb.append(num%2);

num=num>>1;

}

System.out.println(sb.reverse());

}

056_数组(十进制-十六进制)_黑马程序员_Java基础视频

/*

十进制-->十六进制。

*/

//思路 目标&15获取后4位的数,小于10时候输出数字,大于10时输出字母


class Demo

{
public static void main(String[] args)
{
toHex(1098);
        }
public static void toHex(int num)
{
while(num!=0)
{
int temp=num&15;
num=num>>>4;
                        if(temp>=10)
System.out.println((char)(temp-10+'A'));
else
System.out.println(temp);

}
}

}

//上面是自己写的和老师不同,也不清楚哪一个更优化一些,以后做多了应该晓得吧。

057_数组(查表法十进制-十六进制)_黑马程序员_Java基础视频

查表法获取内容

/*
查表法:将所有的元素临时存储起来,建立对立关系。
每一次&15后的值作为索引去查建立好的表,就可以找到对应的元素。
这样比-10+'a'简单的多。
这个表怎么建立呢?
可以通过数据形式来定义。
*/


class Demo
{
public static void main(String[] args)
{
toHex(60);
}


public static void toHex(int num)
{
while(num!=0)
{
int temp=num&15;
num=num>>>4;
char[] array={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
System.out.println(array[temp]);
}
}
}

058_数组(查表法十进制-二进制)_黑马程序员_Java基础视频

059_数组(进制转换优化)_黑马程序员_Java基础视频.avi


练习十进制转二进制

      十进制转八进制

      十进制转十六进制

public static void trans(int num,int base,int offset)

再做一个判断当等于0的时候,就直接打印0就可以啦。


060_数组(二维数组)_黑马程序员_Java基础视频

int[][] arr=new int[3][2];

int[]arr=new int[3];//一维数组中有3个元素。

int[][]arr=new int[3][4];//定义了名称为arr的二维数组,二维数组中有3个1维数组。

每个一维数组中有4个元素 


int[][] arr=new int[3][];

int[] arr[0]=new int[3];

int[] arr[1]=new int[2];

int[] arr[2]=new int[1];

//这就是我们说的不规则数组。


你可能感兴趣的:(黑马程序员JAVA 050---060 小结)