- // 数组排序之冒泡排序:
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索
public class ArrayDemo {
public static void main(String[] args) {
int [] arr= {24,69,80,57,13};
System.out.println(“排序前:”);
printArray(arr);
bubbleSort(arr);
System.out.println(“排序后:”);
printArray(arr);
}
public static void bubbleSort(int[] arr) {
for(int x=0;x<arr.length-1;x++) {
for(int y=0;y<arr.length-1-x;y++) {//比较的次数。
if(arr[y]>arr[y+1]) {
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0;x<arr.length;x++) {
if(x==arr.length-1) {
System.out.print(arr[x]);
}else {
System.out.print(arr[x]+",
");
}
}
System.out.println("]");
}
}
- // 数组排序之选择排序:
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕最小值出现在了最小索引处
public class ArrayDemo2 {
public static void main(String[] args) {
int[] arr= {24,69,80,57,13};
System.out.println(“排序前:”);
printArray(arr);
selectSort(arr);
System.out.println(“排序后:”);
printArray(arr);
}
public static void selectSort(int[] arr) {
for(int x=0;x<arr.length-1;x++) {
for(int y=x+1;y<arr.length;y++) {
if(arr[y]<arr[x]) {
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0;x<arr.length;x++) {
if(x==arr.length-1) {
System.out.print(arr[x]);
}else {
System.out.print(arr[x]+",
");
}
}
System.out.println("]");
}
}
- // 把字符串中的字符进行排序。
分析: A:定义一个字符串 B:把字符串转换为字符数组 C:把字符数组进行排序 D:把排序后的字符数组转成字符串 E:输出最后的字符串
public class ArrayDemo3 {
public static void main(String[] args) {
String s=“dacgebf”;
char[] chs=s.toCharArray();
bubbleSort(chs);
String result=String.valueOf(chs);
System.out.println(“result:”+result);
}
public static void bubbleSort(char[] chs) {
for(int x=0;x<chs.length-1;x++) {
for(int y=0;y<chs.length-1-x;y++) {
if(chs[y]>chs[y+1]) {
char temp=chs[y];
chs[y]=chs[y+1];
chs[y+1]=temp;
}
}
}
}
}
- //二分查找(折半查找):数组元素有序
分析:A:定义最大索引,最小索引 B:计算出中间索引
C:拿中间索引的值和要查找的值进行比较
相等:就返回当前的中间索引
不相等: 大 左边找 小 右边找
D:重新计算出中间索引
大 左边找 max
= mid - 1;
小 右边找 min
= mid + 1;
E:回到B
import
java.util.Scanner;
public class ArrayDemo4 {
public static void main(String[] args) {
int arr[]= {11,22,33,44,55,66,77};
Scanner sc=new Scanner(System.in);
System.out.println(“请输入要查找的数据:”);
int value=sc.nextInt();
int index=getIndex(arr,value);
System.out.println(“index:”+index);
}
public static int getIndex(int[] arr,int value) {
int max=arr.length-1;
int min=0;
int mid=(max+min)/2;
while(arr[mid]!=value) {
if(arr[mid]>value) {
max=mid-1;
}else if(arr[mid]<value) {
min=mid+1;
}
if(min>max) {
return -1;
}
mid=(max+min)/2;
}
return mid;
}
}
- // 需求1:把100这个数据的二进制,八进制,十六进制计算出来
需求2:我要求大家判断一个数据是否是int范围内的。
public class DigitDemo {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(100));
System.out.println(Integer.toOctalString(100));
System.out.println(Integer.toHexString(100));
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}