以上是基础的原理过程,可是有一个问题,数据的不一样可能排序的次数出现不一样,可是有多少个数据,总的排序次数不会超过数组的长度。只要排序的次数达到长度*长度的次数,那么全部的数据就能够排序成功。java
进行冒泡排序:算法
public class 数组的排序 { public static void main(String[] args) { int data[] = new int[]{2,1,9,0,5,3,7,6,8}; get(data); //外层控制排序的总次数 for (int y = 0 ; y < data.length ; y++){ //内层控制每次的排序控制 for (int x = 0 ; x <data.length-1 ; x++) { if (data[x] > data[x+1]){ int t = data[x]; data[x] = data[x+1]; data[x+1] = t; } } } get(data); } //输出数据的方法 public static void get(int temp[] ){ for (int i = 0 ; i < temp.length ; i++) { System.out.print(temp[i]+ "、"); } System.out.println(); } }
改善设计:主方法设计上是做为程序的起点,既然是起点,全部的代码编写必定尽可能简单,那么咱们能够单独定义方法进行复杂操做。数组
1 public class 数组的排序 { 2 public static void main(String[] args) { 3 int data[] = new int[]{2,1,9,0,5,3,7,6,8}; 4 get(data); 5 sort(data); 6 get(data); 7 }
8 //输出数据的方法 9 public static void get(int temp[] ){ 10 for (int i = 0 ; i < temp.length ; i++) { 11 System.out.print(temp[i]+ "、"); 12 } 13 System.out.println(); 14 }
15 //负责排序的方法 16 public static void sort(int s[]){ 17 //外层控制排序的总次数 18 for (int y = 0 ; y < s.length ; y++){ 19 //内层控制每次的排序控制 20 for (int x = 0 ; x <s.length-1 ; x++) { 21 if (s[x] > s[x+1]){ 22 int t = s[x]; 23 s[x] = s[x+1]; 24 s[x+1] = t; 25 } 26 } 27 } 28 } 29 }
要实现转置的操做有两个思路:spa
定义一个新的数组,然后将原始数组按照排序的方式插入到新的数组之中,随后改变原始数组的引用;设计
1 public class 数组的排序 { 2 public static void main(String[] args) { 3 int data[] = new int[]{1,2,3,4,5,6,7,8}; 4 //首先定义一个新的数组,长度与原始数组一致 5 int temp[] = new int[data.length]; 6 int foot = data.length -1 ; 7 //对于新的数组按照索引由小到大的顺序循环 8 for (int i = 0 ; i < temp.length ; i++) { 9 temp[i] = data[foot]; 10 foot--; 11 } 12 data = temp; //data转向temp ,而data的原始数据就成为了垃圾 13 get(data); 14 15 } 16 //输出数据的方法 17 public static void get(int temp[] ){ 18 for (int i = 0 ; i < temp.length ; i++) { 19 System.out.print(temp[i]+ "、"); 20 } 21 System.out.println(); 22 } 23 }
虽然上面的算法实现了转置的操做,可是代码里会产生垃圾 data的原始数据就是垃圾。code
转置:blog
1 public class 数组的转置 { 2 public static void main(String[] args) { 3 int data[] = new int[]{1,2,3,4,5,6,7,8,9}; 4 reverse(data); 5 get(data); 6 } 7 //负责转置操做 8 public static void reverse(int arr[]){ 9 int start = 0; 10 int end = arr.length -1; 11 for (int i = 0; i < arr.length/2 ; i++) { 12 int temp = arr[start]; 13 arr[start] = arr[end]; 14 arr[end] = temp; 15 start ++; 16 end --; 17 } 18 } 19 //此方法负责输出 20 public static void get(int temp[]){ 21 for(int i = 0 ; i < temp.length ; i++) { 22 System.out.print(temp [i]+"、"); 23 } 24 System.out.println(); 25 } 26 }