java基础-7 ASCII,元素逆序,选择/冒泡排序

目录

1.ASCII编码表

1.1 利用for循环打印ABCDEFG...XYZ,26个大写字母与26个小写字母

1.2 利用for循环打印 9*9 表

2.数组方法练习

2.1数组元素逆序

2.2 数组元素选择排序

2.3 数组元素冒泡排序

2.4 数组元素普通查找

2.5 数组元素二分查找(折半查找)


 

1.ASCII编码表

American Standard Code for Information Interchange,美国标准信息交换代码.

计算机的世界:二进制。对于人类不好认识,不好计算。计算机非常喜欢二进制。

人类的文字,和一个整数进行一一对应

数字0-9对应ASCII编码十进制为48-57,

字母a-z对应ASCII编码十进制为97-122,

字母A-Z对应ASCII编码十进制为65-90

 

计算机识别汉字,中国也想让计算机识别汉字,于是定义了自己的编码表,十进制对应自己的汉字,

于是诞生了第一张简体的中文编码表,GB2312(国标2312),存的是汉字,码表字少,现在不用了,升级为GBK,我们装的中文版windows里面就是GBK(四万个以上汉字)

 

  • 国际标准化组织,各国有各国的编码
  • 万国码表(所有国家)unicode,存储了全国所有的语言
  • 不管什么码表都兼容ASCII

 

小结:(python课件中的)

ASCII码是标准化字符集

Unicode编码:

a. 为解决传统的字符编码方案的局限而产生的

b. 跨语言、跨平台进行文本转换和处理

c. 对每种语言中字符设定统一且唯一的二进制编码

UTF-8编码:

GBK编码:《汉字内码扩展规范》

 

1.1 利用for循环打印ABCDEFG...XYZ,26个大写字母与26个小写字母

public class Test04 {
	public static void main(String[] args) {
		char da = 'A';
		char xiao = 'a';
		for (int i = 0; i < 26; i++) {
			System.out.println("大写字母 "+da+" ,小写字母 "+xiao);
			da++; //更新大写字母值
			xiao++; //更新小写字母值
		}
	}
}

1.2 利用for循环打印 9*9 表

public class Test05 {
	public static void main(String[] args) {
		for (int j = 1; j < 10; j++) {
			for (int k = 1; k <= j; k++) {
				System.out.print(k +"*"+ j +"="+ j*k +"\t");
			}
			System.out.println();
		}
	}
}

2.数组方法练习

2.1数组元素逆序

图解:


//数组元素逆序
public static void receive(int[] arr){
	for (int start = 0, end = arr.length-1; start < end; start++,end--) {
		int temp = arr[start];
		arr[start] = arr[end];
		arr[end] = temp;
	}
}

//打印数组
public static void printArray(int[] arr) {
	System.out.print("[");
	for (int i = 0; i < arr.length; i++) {
		if (i == arr.length - 1) {
			System.out.println(arr[i]+"]");
		} else {
			System.out.print(arr[i]+", ");
		}
	}
}

2.2 数组元素选择排序

图解:

//选择排序
public static void selectSort(int[] arr) {
	//功能
	//外层循环用来控制数组循环的圈数
	for (int i = 0; i < arr.length-1; i++) {
		//内层循环用来完成元素值比较,把小的元素值互换到要比较的第一个元素中
		for (int j = i+1; j < arr.length; j++) {
			if (arr[i] > arr[j]) {
				int temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}
}

2.3 数组元素冒泡排序

图解:

上图中相邻的元素值依次比较,把大的值放后面的元素中,数组循环一圈后,则把最大元素值互换到了最后一个元素中。

数组再循环一圈后,把第二大的元素值互换到了倒数第二个元素中。

按照这种方式,数组循环多圈以后,就完成了数组元素的排序。这种排序方式我们称为冒泡排序。

//冒泡排序
public static void bubbleSort(int[] arr) {
	//功能
	//外层循环用来控制数组循环的圈数
	for (int i = 0; i < arr.length-1; i++) {
		//j < arr.length-1 为了避免角标越界
		//j < arr.length-1-i 为了比较效率,避免重复比较
		//内层循环用来完成元素值比较,把大的元素值互换到后面
		for (int j = 0; j < arr.length-1-i; j++) {
			if (arr[j] > arr[j+1]) {
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
}

//ArrayMethodTest_2.java

package javaProject7;

public class ArrayMethodTest_2 {
	public static void main(String[] args) {
		int[] array= {3,5,1,6,22,56,8};
		selectSort(array);
		printArray(array);
		
		bubbleSort(array);
		printArray(array);	
	}		
	public static void bubbleSort(int[] array) {
		for(int i=0;i<array.length-1;i++) {
			for(int j=1; j<array.length-i-1; j++) {
				if(array[j]>array[j+1]) {
					int temp=array[j];
					array[j]= array[j+1];
					array[j+1]= temp;			
				}	
			}
		}
	}
	//选择排序
	public static void selectSort(int[] arr) {
		//功能
		//外层循环用来控制数组循环的圈数
		for (int i = 0; i < arr.length-1; i++) {
			//内层循环用来完成元素值比较,把小的元素值互换到要比较的第一个元素中
			for (int j = i+1; j < arr.length; j++) {
				if (arr[i] > arr[j]) {
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
	}
	//冒泡排序
	public static void printArray(int[] arr) {
		System.out.print("[");
		for(int i=0; i<arr.length; i++) {
			if(i==arr.length-1) {
				System.out.print(arr[i]+"]");
			}else {
				System.out.print(arr[i]+",");
			}		
		}
		System.out.println();
	}
}

2.4 数组元素普通查找

图解:


public static int getArrayIndex(int[] arr, int number) {
		//把数组中的元素依次与指定的数值 进行比较
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == number) {
				//找到了
				return i;
			}
		}
		return -1;
	}

 

2.5 数组元素二分查找(折半查找)

图解:

图解:

/*
	 * 定义方法,实现折半查找
	 * 返回值:索引
	 * 参数:数组,被找的元素
	 * 实现步骤:
	 * 1.需要的变量定义:三个指针min,mid。max
	 * 2.进行循环的条件  min<=max
	 * 3.背照的元素和中间的索引元素进行比较
	 * 元素 > 中间索引   小指针= 中间+1
	 * 元素 < 中间索引  大指针 = 中间-1
	 * 元素 ==中间索引  找到了,结束,返回中间索引
	 * 4.循环结束,无法折半,元素没有找到则返回-1
	 */
	public static int binarySearch(int[] arr, int key) {
		int min = 0;
		int max = arr.length-1;
		int mid = 0;
		//循环折半,条件 min<=max
		while(min <= max) {
			mid = (min+max)/2;
			//没找了, 更新范围,继续比较
			//更新范围
			if(key > arr[mid]) {
				//在右边
				min = mid + 1;
			}else if (key < arr[mid]) {
				//在左边
				max = mid - 1;
			}else {
				//找到了
				return mid;
			}
		}
		return -1;
	}

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值