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
原创粉丝点击