一. 张仰彪排序法
这个算法是从CSDN的论坛上看到的,觉得挺有意思的,以下为张仰彪排序法的实现(Java描述):
public int[] SortProcedure(int[] oldArranewArray) {
// 存放排序后的数组
int[] newArray = new int[oldArranewArray.length];
// 待排序数据在数组里的排名
int order=0;
for (int i=0; i<oldArranewArray.length; i++) {
// 内循环运行一次,一个待排序数据在数组里的大小排名就确定了
for (int t=0; t<oldArranewArray.length; t++) {
// 待排序数组中的一个数据与其余数据相比较
if(oldArranewArray[t] > oldArranewArray[i])
// 每发现一个更大的数,自己的排名就向后延。
order++;
}
// 有点类似线性探测
while(newArray[order] != 0) // 非0说明此位置已拷入过数据。
order++; // 增大数据的排名,去找下一个位置。
// 将待排序数据oldArranewArray[i]复制到结果数组newArray。
newArray[order] = oldArranewArray[i];
order = 0; // 排完一个数据,准备再排下一个。
}
return newArray;
}
复杂度分析: