实现整数排序的方法有很多,属于数据结构里面比较重要的一部分也是数据结构必讲的一个知识点,最近在学习java语言实现的整数排序,现在把学到的和大家分享一下。
选择排序,
第一次循环示意图:
假如数组有n个元素,排序将进行n次,我们介绍第一次排序,后面的n-1次排序和前面的一样,
第一次排序,用数组Data的第一个元素Data[0]和第二个元素Data[1]进行比较,如果第一个元素比第二个元素大,则交换第一个元素Data[0]和第二个元素Data[1]的数值;然后第
一元素Data[0]和第三个元素Data[2]进行比较,如果第一个元素Data[0]的值比第三个元素Data[2]的值大,则进行交换值,如果不大则不交换;以此类推直到第一个元素Data[0]和最后一个元素Data[n-1]比较完,则第一轮比较结束。第一轮比较结束的结果是第一个元素Data[0]的值将是整个数组Data中最小的一个元素。接下来进行第二轮比较,第二轮和第一轮类似,这次用第二个元素Data[1]着次和后的元素比较,一次类推、、、、、、,总共比较完需要n-1轮比较,每次比较次数分别是n-1,n-2、、、、1.
代码如下:
/*
* 采用选择排序对整数数组惊醒排序
* */
public class SelectionnSort implements ISortNumber{
public SelectionnSort(){
}
@Override
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;
}
/*
* 交换数组中下标为src和dest的值
* @param data数组
* @param src源下标
* @param dest目标下标
* */
private void swap(int[] data,int src ,int dest){
int temp = data[src];
data[src] = data[dest];
data[dest] = temp;
}
}
public interface ISortNumber {
/*
* 对整形数据按照升幂排列
* @param intArray待排序的整形数组
* @return 按照升序排列后的数组
* */
public int[] sortASC(int[] intArray);
}