JAVA学习代码——数组排序
来源:互联网 发布:红顶位面商人知轩 编辑:程序博客网 时间:2024/06/02 04:50
排序算法:Paixusuanfa.java
package 数组_排序;//数组的几种排序算法的实现public class Paixusuanfa {/*选择法排序: 假定有n个数的序列,要求按递增次序排序,算法步骤:(1)从n个数中选出最小数的下标,将最小数与第一个数交换位置; (2)除第一个数外,其余n-1个数再按方法(1)选出次小的数,与第二个数交换位置; (3)以此类推,最终构成递增序列。 由此可见,数组排序要用两重循环才能实现,内循环选择最小数,找到该数在数组中的排列位置;执行n-1次外循环,使n个数都确定了在数组中的排序位置。*/public int[] choiceSort(int[] arr){ for(int i = 0;i < arr.length;i++){ int m = i; for(int j = i + 1;j < arr.length;j++){ //如果第j个元素比第m个元素小,将j赋值给m if(arr[j] < arr[m]){ m = j; } } //交换m和i两个元素的位置 if(i != m){ int t = arr[i]; arr[i] = arr[m]; arr[m] = t; } } return arr; } /*冒泡排序法:冒泡法排序与选择法排序类似,选择法排序在每一轮排序时找最小数或最大数的下标, 出了内循环再交换最小数的位置,而冒泡法排序时将相邻数比较,次序不对就交换位置,出了内循环 最小数或最大数已冒出*/public int[] insertSort(int[] arr){ for(int i = 1;i < arr.length;i++){ int temp = arr[i]; int j = i - 1; while(temp < arr[j]){ arr[j+1] = arr[j]; j--; if(j == -1){ break; } } arr[j+1] = temp; } return arr; } //插入排序法:将要排序的数组分成两部分,每次从后面的部分取出索引最小的元素插入到前一部分的适当位置。/*public int[] insertSort(int[] arr){ for(int i = 1;i < arr.length;i++){ int temp = arr[i]; int j = i - 1; while(temp < arr[j]){ arr[j+1] = arr[j]; j--; if(j == -1){ break; } } arr[j+1] = temp; } return arr; } *//*快速排序法:快速排序法号称是目前最优秀的算法之一,实现思路是,将一个数组的排序问题看成是两个小数组的排序问题,而每个小的数组又可以继续看成更小的两个数组,一直递归下去,直到数组长度大小最大为2。*/public int[] fastSort(int[] arr,int left,int right){ if(left < right){ int s = arr[left]; int i = left; int j = right + 1; while(true){ //向右找大于s的元素的索引 while(i+1 < arr.length && arr[++i] < s); //向左找小于s的元素的索引 while(j-1 > -1 && arr[--j] > s); //如果i >= j 推出循环 if(i >= j){ break; }else{ //教化i和j位置的元素 int t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } arr[left] = arr[j]; arr[j] = s; //对左面进行递归 fastSort(arr,left,j-1); //对右面进行递归 fastSort(arr,j+1,right); } return arr; } }
package 数组_排序;/** * 此代码实现了将随机数去重后存入数组,数组排序,将数组转换为字符串输出 */import java.util.Arrays;public class Suijishu_quchong_zifu {public static void main(String[] args) {int[] c = new int[10];// 定义一个整型数组//int b[] = c;// 引入一个全局变量,将c的值取出System.out.print("随机输出10个整数:");for (int i = 0; i < c.length; i++) {int a = (int) (Math.random() * 100);c[i] = a;// Math.random():随机输出double数0.00-0.99,*100后就是100以内的整数// 将随机产生的整数赋值给数组cfor (int j = 0; j < i; j++) {while (c[i] == c[j]) {i--;// 如果重复,数组下标减一,即退回去重新生成随机数}}System.out.print(c[i] + " ");// 只产生随机数,不去重(去除重复的值)// int[] c;// c = new int[10];// System.out.print("随机输出10个整数:");// for (int a = 0; a < 10; a++) {// int i = (int) (Math.random() * 100);// // Math.random():随机输出double数0.00-0.99,*100后就是100以内的整数// c[i] = a; // 将随机产生的整数赋值给数组c// for (int j = 0; j < i; j++) {// while (c[i] == c[j]) {// i--;// 如果重复,数组下标减一,即退回去重新生成随机数// }// }// System.out.print(c[i] + " ");}System.out.println("");System.out.println("=========================");// ====================================下面是数组排序int[] d = { 99, 2, 61, 34, 45, 12, 64 };System.out.print("排序前为: ");for (int j = 0; j < d.length; j++) { // j<c.length:j<数组c的长度System.out.print(d[j] + "\t");// 打印数组c[]的值}// for(int i=0;i<c.length;i++){ //排序// for(int j=1;j<=i;j++){// if(c[i]>c[j]){// int t=0;// t=c[i];// c[i]=c[j];// c[j]=t;// }// }//// }System.out.println("");Arrays.sort(d); // 使用Arrays类的sort()方法对数组进行排序,从小到大排序System.out.print("排序后为:");for (int j = 0; j < d.length; j++) {System.out.print(d[j] + "\t");// 打印排序后数组}/* * 将数组转换为字符串 语法:Arrays.toString(数组名); 该方法按顺序把多个数组元素连在一起,多个元素之间用逗号加空格隔开 */System.out.println();System.out.println("输出数组score中的元素:" + Arrays.toString(d));}}
0 0
- JAVA学习代码——数组排序
- Java数组学习练习3冒泡排序数组代码
- java数组——数组排序sort()
- Java数组排序——冒泡排序
- java学习之数组排序
- 黑马程序员java学习— 数组的选择排序和冒泡排序
- java学习之 数组排序-选择排序
- Java代码实现二维数组的排序
- Java数组冒泡排序 (代码)
- java中函数,数组,排序代码
- java数组操作1——排序
- java数组——冒泡排序
- java数组——直接选择排序
- Java数组——反转排序
- java实现数组的冒泡排序、选择排序代码
- javascript学习之数组(13)—— 数组 排序
- [Java代码] Java排序算法之——希尔排序
- 黑马程序员——Java学习笔记——数组的排序和查找
- Android混淆编译、反混淆、反编译
- uva11270Tiling Dominoes
- HDU 3652 裸数位DP
- 论表单设计规范
- Advanced Fruits
- JAVA学习代码——数组排序
- 实数
- 学习笔记(四)SharedPreferences与文件管理
- 使用Cocos2d时关联源码问题解决
- 分布式存储基本概念
- C++ Primer 第17章 知识点回顾
- 谍影重重5 百度云/迅雷/BT种子1080P高清版下载
- java中String的粗浅使用
- 分类的线性回归方法