- class MyArrays{
- /**
- 排序方式一,效率高 :属于选择排序
-
- */
- public static void sort1(int[] arr){
- int dexMin = 0;
- for(int i = 0 ; i < arr.length ; i++){
- dexMin = i;
- for(int j = i + 1 ; j < arr.length ; j++){
- if(arr[dexMin]>arr[j]){
- dexMin = j;
- }
- }
- if(dexMin!=i){
- exchangeArr(arr,dexMin,i);
- }
- }
- }
-
- /**
-
- 排序方式二,效率低 :属于选择排序
-
- */
- public static void sort2(int[] arr){
- for(int i = 0 ; i < arr.length ; i++){
- for(int j = i + 1 ; j < arr.length ; j++){
- if(arr[i]>arr[j]){
- exchangeArr(arr,i,j);
- }
- }
- }
- }
-
- /**
-
- 排序方式三,效率居中 :属于冒泡排序
-
- */
- public static void sort3(int[] arr){
- for(int i = 0 ; i < arr.length ; i ++){
- for(int x = 0 , y = x + 1 ;y < arr.length - i ; x ++ , y ++){
- if(arr[x]>arr[y]){
- exchangeArr(arr,x,y);
- }
- }
- }
- }
-
- /**
- * 遍历数组,打印到控制台
- */
- public static void printArr(int[] arr){
- for(int i = 0 ; i < arr.length ; i ++){
- System.out.print(arr[i]+" , ");
- }
- }
-
- //私有方法,给数组提供换位服务
- private static void exchangeArr(int[] arr , int a , int b){
- /*
- arr[a] = arr[a]^arr[b];
- arr[b] = arr[a]^arr[b]; 异或换位//根据测试的时间上看,异或换位和利用第三方变量换位所需要的时间是一样的
- arr[a] = arr[b]^arr[a]; */
-
- int i = arr[a];
- arr[a] = arr[b];
- arr[b] = i;
- }
-
- /**
- * 获取一个int类型数组;通过传入的参数决定数组的长度,该方法随机生成随机数填充到数组中
- */
- public static int[] getIntArr(int len){
-
- Random random = new Random(1245125L); //传入随机数种子,这样每次生成的10000个随机数都是一样的
- int[] arr = new int[len];
- for(int i = 0; i < arr.length ; i++){
- arr[i] = random.nextInt(100000);
- }
- return arr;
- }
- }
复制代码 |