数组排序
来源:互联网 发布:格林奶奶的睡美人知乎 编辑:程序博客网 时间:2024/05/20 05:24
- 一:冒泡排序
- 数组排序之冒泡排序,两两比较,大的往后放放,第一次比较完毕之后,最大值就出现在了最大索引出,继续依次比较,得到一个排好序的数组!
public class Test { public static void main(String[] args) { //定义数组,并且静态初始化 int[] arr = {69,80,24,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.println(arr[x]+"]"); }else{ System.out.print(arr[x]+", "); } } }}
- 二:选择排序
- 数组排序之:选择排序:用0索引依次和后面的索引进行比较,第一次比较完毕之后,最小值出现在了最小索处!同理,其他索引也是依次进行比较!
public class ArrayDemo { 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.println(arr[x]+"]"); }else{ System.out.print(arr[x]+", "); } } }}
举例: 把字符串中的字符进行排序,改进键盘录入
举例:”dacgebf”
结果:”abcdefg”
1)键盘录入一个字符串 2)吧字符转换字符数组 3)冒泡排序,可以功能区实现/ 4)所以将字符数组转换成字符串
public class ArrayTest { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in) ; //录入并接收数据 System.out.println("请输入一个字符串:"); String line = sc.nextLine() ; //将字符串转换字符数组 char[] chs = line.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 ; } } } }}
三:数组高级部分:查找
基本查找:数组元素查表法(查询数组中的元素第一次在数组中出现的索引):从头查到尾
- 数组二分查找(折半查找)
思路:
1)定义最大索引和最小索引
2)计算出中间索引:
如果要查的元素和中间索引对应的元素相等,返回中间索引
* 如果不相等
* 大了,左边找
* 小了右边找
* 3)重写计算出中间索引:
* 大了:max = mid -1 ;
* 小了:min = mid+1 ;
* 4)继续回到(2)进行重新计算在查找!
public class ArrayDemo { public static void main(String[] args) { //定义数组,有序数组,静态初始化 int[] arr = {11,22,33,44,55,66,77}; int index = getIndex(arr,55) ; System.out.println("index:" +index); int index2 = getIndex(arr,555) ; System.out.println("index2:"+index2); } /* *将二分查找写一个功能 * 两个明确: * 明确返回值类型:int类型 * 明确参数类型:int ,两个参数 */ public static int getIndex(int[] arr,int value){ //1)定义最大索引,和最小索引 int max = arr.length -1 ; int min = 0 ; //2)计算出中间索引 int mid = (max+min)/2 ; //3)查找该该元素是否和中间索引对应的元素一致; 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 ; }}
阅读全文
0 0
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- POJ1284 Primitive Roots【原根】
- Ubunte 16.04下安装ROS kinetic
- js中的10个难点
- 【LaTeX公式】LaTeX数学公式的符号表示
- Android 一个带圆角的弧形
- 数组排序
- this 的4种基本用法
- 检查ZIP内文件个数
- 追踪(trace)系统框架设计的思考
- 最速下降法求特征值matlab程序
- 2017年7月27日22:02:18
- listview内嵌GIF和GifImageView的使用
- 集合框架——LinkedList练习
- 数据结构之队列(顺序队列和链式队列)