上一篇:熟练运用数组,看这篇就够了 | 带你学《Java面向对象编程》之十七
【本节目标】
通过阅读本节内容,你将学会通过循环巧妙地实现数组排序问题,并通过控制台输出结果分析代码异常,解决异常,最终完成设计,初步步入算法的领域。
数组操作案例:数组排序
数组排序指的是可以将一个杂乱的数组按照顺序进行码放,但是对于数组排序总是通过一个基础的模型完成的,例如:本次先通过一个升序排序的方式来观察排序的处理。
图一 排序过程
范例:数组排序分析
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {8,9,0,2,3,5,10,7,6,1} ;
for (int y = 0 ; y < data.length ; y ++) {
if (data[y] > data[y + 1]){
int temp = data[y] ;
data[y] = data[y + 1] ;
data[y + 1] = temp ;
}
}
printArray(data) ;
}
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.print (temp[x] + “、”) ;
}
System.out.println() ;
}
}
图二 运行结果一
发生数组越界,修改:
for (int y = 0 ; y < data.length-1 ; y ++)
图三 运行结果二
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {8,9,0,2,3,5,10,7,6,1} ;
for (int x =0 ; x < data.length ; x ++) {
for (int y = 0 ; y < data.length-1 ; y ++) {
if (data[y] > data[y + 1]){
int temp = data[y] ;
data[y] = data[y + 1] ;
data[y + 1] = temp ;
}
}
}
printArray(data) ;
}
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.print (temp[x] + “、”) ;
}
System.out.println() ;
}
}
图四 执行结果三
针对于已经排好序的,不需要再次进行比较,修改
for (int y = 0 ; y < data.length-x-1 ; y ++)
图五 执行结果四
以上的程序代码都是通过主方法完成的,不符合面向对象的设计结构,最好的做法是将这个排序处理的操作交给一个类进行处理完成。
优化:
class ArrayUtil {
public static void sort(int data[]) { //进行数组的排序处理
for (int x =0 ; x < data.length ; x ++) {
for (int y = 0 ; y < data.length-x-1 ; y ++) {
if (data[y] > data[y + 1]){ //交换数据
int temp = data[y] ;
data[y] = data[y + 1] ;
data[y + 1] = temp ;
}
}
}
}
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.print (temp[x] + “、”) ;
}
System.out.println() ;
}
}
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {8,9,0,2,3,5,10,7,6,1} ;
ArrayUtil.sort(data) ; //排序
ArrayUtil.printArray(data) ;
}
}
图六 优化后执行结果
在以后进行类设计的时候,如果发现类中没有属性存在的意义,那么定义的方法就没有必要使用普通方法了,因为普通方法需要在有实例化对象产生的情况下才可以调用。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学