------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;y
{
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 } //上面是自己写的和老师不同,也不清楚哪一个更优化一些,以后做多了应该晓得吧。 057_数组(查表法十进制-十六进制)_黑马程序员_Java基础视频 查表法获取内容 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]; //这就是我们说的不规则数组。
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);
}
}
/*
查表法:将所有的元素临时存储起来,建立对立关系。
每一次&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]);
}
}
}