常见排序算法实现及复杂度分析
2005-12-30 21:14
585 查看
一. 张仰彪排序法
这个算法是从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;
}
复杂度分析:
这个算法是从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;
}
复杂度分析:
相关文章推荐
- 常见排序算法的C语言实现以及算法复杂度分析(持续更新)
- 排序算法实现及复杂度分析(一)
- 常见内部排序算法 简单数组实现与分析(快速(偶原创partition函数,望众高手指正)、归并、希尔、插入、选择、冒泡)
- 【转】常见排序算法分析及java实现
- 排序算法的C语言实现以及各个算法的时间复杂度和空间复杂度分析(冒泡排序)
- 排序算法实现及复杂度分析(二)
- 看得懂的常见排序算法分析(java实现)
- 几种常见内部排序算法分析与实现(C语言描述)
- 九大排序算法的手写实现及时空复杂度分析 笔试面试必备
- Java实现经典排序算法及复杂度稳定性分析
- 七种常见经典排序算法分析与实现--C++
- 排序算法——希尔排序的图解、代码实现以及时间复杂度分析
- 排序算法——快速排序的图解、代码实现以及时间复杂度分析
- 排序算法——插入排序的图解、代码实现以及时间复杂度分析
- Java实现经典排序算法及复杂度稳定性分析
- 排序算法实现及复杂度分析(三)
- 各种排序算法的分析及java实现
- java 实现几种常见的排序算法
- 关于常见排序算法的稳定性分析和结论(转载)
- Java实现:排序算法--时间复杂度为O(n² )