学习总结2

一、数据拷贝

1.char数据类型在内存中是以整数存储的(范围是0~65535)。
  每一个整数映射一个字符。
2.byte、short、char这三种变量一旦参与运算,则编译器
  将运算的结果转换为int(因为编译器将参与运算的byte、short、char当作了int)。
  eg:byte b1=1;
     byte b2=2;
     byte b3=(byte) (b1+b2);
 
3.当给byte、short、char变量以“直接常量”的方式赋值
  时,只要这个“直接常量”没有超过这些数据类型的范围,
  则编译器也是允许的。

public static void main arraycopy(Object src,int srcPos,Object dest, int destPos,int length){

    //src:原数组

      srcPos:原数组的起始位置

      dest:目标数组

      destPos:目标数组的起始位置

      length:拷贝的数组,元素个数

//

int[] a={1,2,3,4,5,6,7,8,9};

int[] b={11,22,33,44,55,66,77,88,99};

syso("复制后的数组:");

for(int i=0;i<b.length;i++){

syso(b[i]+"  ");

}

}

二、冒泡排序:有n个数据,进行n-1进行躺排序,每次排序都会通过“两两交换”的方式对数据进行比较,每次排序都会将最大值“浮”到后面

int[] a={33,55,11,99,66,88,77,44,22};

bubblesort(a);

}

public static void main(int[] a){

for(int i=1;i<a.length-1;i++){

for(j=0;j<a.length;j++){

if(a[j]>a[j+1]){

int temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

syso("第"+i+"趟排序结果");

for(int x:a){

syso(x+"  ");

}

syso();

}

}

三、插入排序:对一个有n个元素的数据序列,排序需要进行n-1趟插入操作(可优化)。
      第一趟插入将第2个元素插入前面的有序子序列(此时前面只有一个元素)。
       第二趟插入将第3个元素插入前面的有序子序列,前面两个元素是有序的。
        第n-1趟插入将第n个元素插入前面的有序子序列,前面n-1个元素是有序的。

package sort;

public class InsertSort {

 public static void main(String[] args) {
  int[] a={22,55,11,66,88,77,44,99,33};
        insertSort(a);
        System.out.println("插入排序的结果:");
        for (int i = 0; i < a.length; i++) {
   System.out.print(a[i]+"  ");
  }
 }
 
 
 public static void insertSort(int[] a){
  for (int i = 1; i <=a.length-1; i++) {
   int data=a[i];  // 当前“指示灯数据”
   int j=i-1;   // 使用j变量记录“指示灯数据”的前一个数据的索引
   while(j>=0 && data<a[j]){
    a[j+1]=a[j];   // 后移“指示灯”数据前面的数据
    j--;
   }
   a[j+1]=data;
  }
 }

}

四、快速排序

package sort;
public class QuickSort {
 public static void main(String[] args) {
  int[] a={22,55,11,66,88,77,44,99,33};
  quickSort(a,0,a.length-1);
  for (int i = 0; i < a.length; i++) {
   System.out.print(a[i]+"  ");
  }
 }
 
 
 public static void quickSort(int[] array,int start,int end){
  if(start>=end){
   return;   // 结束方法
  }
  int data=array[start];   // 将起始索引执行的值作为“分界值”
  int i=start+1;  // 记录向右移动的位置(“红军”)
  int j=end;   // 记录向左移动的位置("蓝军")
  while(true){
   while(i<=end && array[i]<data){
    i++;   // 索引右移
   }
   while(j>=start+1 && array[j]>data){
    j--;   // 索引左移
   }
   if(j>i){
    int temp=array[i];
    array[i]=array[j];
    array[j]=temp;
   }else{
    break;
   }
  }
  // “蓝军”与“分界值”交换位置
  array[start]=array[j];
  array[j]=data;  
  quickSort(array,start,j-1);   // 递归调用完成“分界值”左边的排序
  quickSort(array,j+1,end);   // 递归调用完成“分界值”右边的排序
 }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值