数组高级:排序和查找
一、排序
1、冒泡排序(前面讲解过)
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
2、选择排序
从0索引开始,依次和后面元素比较,小的往前放。第一次完毕,最小值出现在了最小索引 处
二、查找
1、基本查找:数组元素无序
2、二分查找:数组元素有序
三、数组高级练习题
1、把字符串中的字符进行排序
/*
举例:"dacgebf"
结果:"abcdefg"
符合常识字典字母顺序,在java中又称之为自然排序
分析:
1、将被排序的字符串转成字符数组
2、将字符数组进行排序
3、将数组转成字符串
4、输出
*/
public class StringBufferDemo12 {
public static void main(String[] args) {
//定义一个字符串
String s = "dacgebf";
System.out.println("排序之前的字符串为:" + s);
//将被排序的字符串转成字符数组
char[] chars = s.toCharArray();
//将字符数组进行排序
//使用冒泡排序法
//自定义方法名,在main方法外类内,编写方法的功能
bubblingSort(chars);
//将数组转换从字符串
//使用String类中的valueOf方法
String s1 = String.valueOf(chars);
System.out.println("排序后的字符串为:" + s1);
}
private static void bubblingSort(char[] chars) {
for (int x = 0; x < chars.length - 1; x++) {//外层控制比较的次数
for (int y = 0; y < chars.length - 1 - x; y++) {//内层控制着前一个和后一个比较
if (chars[y] > chars[y + 1]) {
char temp = chars[y];//定义一个临时的第三方变量来接收大的值
chars[y] = chars[y + 1];//然后将y+1赋给y,y+1就没值了
chars[y + 1] = temp;//然后再将上一次比较出来大的那个值赋给y+1
}
}
}
}
}
执行结果如下:
排序之前的字符串为:dacgebf
排序后的字符串为:abcdefg
Process finished with exit code 0