package sort;
public interface ISortNumber {
/**
* 对整型数组按升序排序
* @param intArray 待排序的整型数组
* @return 按升序排序后的数组
*/
public int[] sortASC(int[] intArray);
}
package sort;
/**
* 冒泡排序法
*/
public class BubbleSort implements ISortNumber {
public int[] sortASC(int[] intArray) {
if(intArray==null){
return null;
}
//因为Java的参数传递是采用引用传值方式,因为在排序的过程中,需要对改变数组,
//所以,为了保证输入参数的值不变,这里采用了数组的clone方法,直接克隆一个数组。
int [] srcDatas=(int[])intArray.clone();
boolean changedPosition=true;
int comparedTimes=0;
int maxComparedTimes = srcDatas.length - 1;
while((comparedTimes<maxComparedTimes)&&(changedPosition)){
for(int i=0; i<(maxComparedTimes-comparedTimes);i++){
changedPosition=false;
if(srcDatas[i]>srcDatas[i+1]){
swap(srcDatas, i, i+1);
changedPosition=true;
}
}
comparedTimes++;
}
return srcDatas;
}
/**
* 交换数组中下标为src和dest的值
* @param data 数组
* @param src 源下标
* @param dest 目标下标
*/
public void swap(int[] data,int src,int dest){
int temp=data[src];
data[src]=data[dest];
data[dest]=temp;
}
}
package sort;
public class SelectSort implements ISortNumber{
/**
* 选择排序
*/
public int[] sortASC(int[] intArray) {
if(intArray==null){
return null;
}
int[] srcDatas=intArray.clone();
int size=srcDatas.length;
for(int i=0 ;i<size;i++){
for(int j=i;j<size;j++){
if(srcDatas[i]>srcDatas[j]){
swap(srcDatas, i, j);
}
}
}
return srcDatas;
}
public void swap(int[] srcData,int src,int dest){
int temp=srcData[src];
srcData[src]=srcData[dest];
srcData[dest]=temp;
}
}
package sort;
public class SelectSort implements ISortNumber{
/**
* 选择排序
*/
public int[] sortASC(int[] intArray) {
if(intArray==null){
return null;
}
int[] srcDatas=intArray.clone();
int size=srcDatas.length;
for(int i=0 ;i<size;i++){
for(int j=i;j<size;j++){
if(srcDatas[i]>srcDatas[j]){
swap(srcDatas, i, j);
}
}
}
return srcDatas;
}
public void swap(int[] srcData,int src,int dest){
int temp=srcData[src];
srcData[src]=srcData[dest];
srcData[dest]=temp;
}
}