zoukankan
html css js c++ java
常用排序方法CommonSort
public
class
CommonSort
{
int
[] srcArray
=
new
int
[]
{
49
,
38
,
65
,
97
,
76
,
13
,
0
,
-
1
,
65464
,
4654
,
575
,
4
,
46
,
45654
,
45654
,
45
,
-
100
,
6456
,
45654
,
45654
,
45645
,
64
,
27
,
49
,
2423
,
456
,
465
,
5765
,
5756
,
5756
,
567
,
5
,
2342
,
234245
,
43
,
45
}
;
int
[] sortArray;
int
[] getArray;
int
[] tempArray;
long
beginTime;
long
endTime;
long
spendTime;
public
int
[] InsertSort(
int
[] sa)
{
System.out.println(
"
++InsertSort++
"
);
//
startsort(sa);
int
length
=
sa.length;
tempArray
=
null
;
tempArray
=
new
int
[length];
System.arraycopy(sa,
0
, tempArray,
0
, length);
sortArray
=
null
;
sortArray
=
new
int
[length
+
1
];
//
sortArray[0]为监视窗,交换用
int
j;
for
(
int
i
=
0
;i
<
length;i
++
)
{
sortArray[
0
]
=
tempArray[i];
j
=
i;
while
(j
>
0
&&
sortArray[
0
]
<
sortArray[j])
//
比小
{
sortArray[j
+
1
]
=
sortArray[j];
//
后移一位
j
--
;
}
sortArray[j
+
1
]
=
sortArray[
0
];
//
插入
}
System.arraycopy(sortArray,
1
, tempArray,
0
, length);
//
endsort(sa);
return
tempArray;
}
public
int
[] SelectSort(
int
[] sa)
{
System.out.println(
"
++SelectSort++
"
);
//
startsort(sa);
int
length
=
sa.length;
tempArray
=
null
;
tempArray
=
new
int
[length];
System.arraycopy(sa,
0
, tempArray,
0
, length);
int
i
=
0
;
int
j
=
0
;
int
k
=
0
;
for
(i
=
0
;i
<
length
-
1
;i
++
)
{
k
=
i;
for
(j
=
i
+
1
;j
<
length;j
++
)
{
if
(tempArray[j]
<
tempArray[k])
//
选最小的k
k
=
j;
}
if
(k
!=
i)
swap(tempArray,i,k);
}
//
endsort(sa);
return
tempArray;
}
public
int
[] BubbleSort(
int
[] sa)
{
System.out.println(
"
++BubbleSort++
"
);
//
startsort(sa);
int
length
=
sa.length;
tempArray
=
null
;
tempArray
=
new
int
[length];
System.arraycopy(sa,
0
, tempArray,
0
, length);
for
(
int
i
=
0
;i
<
length;i
++
)
{
for
(
int
j
=
length
-
1
;j
>
0
;j
--
)
{
if
(tempArray[j]
<
tempArray[j
-
1
])
//
逐个比
swap(tempArray,j,j
-
1
);
}
}
//
endsort(sa);
return
tempArray;
}
public
int
[] QuickSort(
int
low,
int
high,
int
[] sa)
{
System.out.println(
"
++QuickSort++
"
);
//
startsort(sa);
int
length
=
sa.length;
tempArray
=
null
;
tempArray
=
new
int
[length];
System.arraycopy(sa,
0
, tempArray,
0
, length);
int
pivot;
if
(low
<
high)
{
pivot
=
partition(low, high,tempArray);
QuickSort(low, pivot
-
1
,tempArray);
QuickSort(pivot
+
1
, high,tempArray);
}
//
endsort(sa);
return
tempArray;
}
public
int
partition(
int
low,
int
high,
int
sa[])
{
int
pivot, p_pos, i;
p_pos
=
low;
pivot
=
sa[p_pos];
for
(i
=
low
+
1
; i
<=
high; i
++
)
{
if
(sa[i]
<
pivot)
{
p_pos
++
;
swap(sa, p_pos, i);
}
}
swap(sa, low, p_pos);
return
p_pos;
}
public
int
[] HeapSort(
int
[] sa)
{
System.out.println(
"
++HeapSort++
"
);
int
length
=
sa.length;
tempArray
=
null
;
tempArray
=
new
int
[length];
System.arraycopy(sa,
0
, tempArray,
0
, length);
//
startsort(sa);
//
endsort(sa);
return
tempArray;
}
public
int
[] MeregSort(
int
low,
int
high,
int
[] sa)
{
System.out.println(
"
++MeregSort++
"
);
//
startsort(sa);
int
length
=
sa.length;
tempArray
=
null
;
tempArray
=
new
int
[length];
System.arraycopy(sa,
0
, tempArray,
0
, length);
int
mid;
if
(low
<
high)
{
mid
=
(low
+
high)
/
2
;
//
求中值
MeregSort(low,mid,tempArray);
//
递归合并
MeregSort(mid
+
1
,high,tempArray);
//
递归合并
Mereg(low,mid,high,tempArray);
//
合并
}
//
endsort(sa);
return
tempArray;
}
public
void
Mereg(
int
low,
int
mid,
int
high,
int
[]sa)
{
int
length
=
sa.length;
sortArray
=
null
;
sortArray
=
new
int
[length
+
1
];
int
h,i,j,k;
h
=
low;
i
=
low;
j
=
mid
+
1
;
while
((h
<=
mid)
&&
(j
<=
high))
{
if
(sa[h]
<=
sa[j])
{
sortArray[i]
=
sa[h];
h
=
h
+
1
;
}
else
{
sortArray[i]
=
sa[j];
j
=
j
+
1
;
}
i
++
;
}
if
(h
>
mid)
{
for
(k
=
j;k
<=
high;k
++
)
{
sortArray[i]
=
sa[k];
i
++
;
}
}
else
{
for
(k
=
h;k
<=
mid;k
++
)
{
sortArray[i]
=
sa[k];
i
++
;
}
}
for
(k
=
low;k
<=
high;k
++
)
sa[k]
=
sortArray[k];
}
public
void
printArray(
int
[] pa)
{
int
length
=
pa.length;
for
(
int
i
=
0
;i
<
length;i
++
)
{
System.out.println(
"
array[
"
+
i
+
"
]
"
+
pa[i]);
}
System.out.println(
"
length:
"
+
length
+
"
:----
"
);
}
public
void
startsort(
int
[] sa)
{
System.out.println(
"
--------------
"
);
printArray(sa);
beginTime
=
System.currentTimeMillis();
System.out.println(
"
starttime:
"
+
beginTime);
}
public
void
endsort(
int
[] sa)
{
printArray(sa);
endTime
=
System.currentTimeMillis();
System.out.println(
"
endtime:
"
+
endTime);
spendTime
=
endTime
-
beginTime;
System.out.println(
"
spendtime:
"
+
spendTime
+
"
:-------
"
);
System.out.println();
}
public
int
[] swap(
int
[] sa,
int
i,
int
j)
{
int
tmp
=
sa[i];
sa[i]
=
sa[j];
sa[j]
=
tmp;
return
sa;
}
public
CommonSort()
{
getArray
=
null
;
startsort(srcArray);
getArray
=
InsertSort(srcArray);
endsort(getArray);
startsort(srcArray);
getArray
=
SelectSort(srcArray);
endsort(getArray);
startsort(srcArray);
getArray
=
BubbleSort(srcArray);
endsort(getArray);
startsort(srcArray);
getArray
=
MeregSort(
0
,srcArray.length
-
1
,srcArray);
endsort(getArray);
startsort(srcArray);
getArray
=
QuickSort(
0
,srcArray.length
-
1
,srcArray);
endsort(getArray);
}
public
static
void
main(String[] args)
{
new
CommonSort();
}
}
查看全文
相关阅读:
interbase C++Builder 简单例子
delphi代码实现创建dump文件
在Mac OSX下使用ssh建立隧道(在Windows下建立隧道可以使用putty,其间会用到ppk文件)
为什么豌豆荚们没能成为伟大的公司?
解读雷军演讲,小米能否借“科技业的无印良品”反弹?(坚硬和纯洁的心,才能把这个事情干好)
SOCKET网络编程5
SQL Server 跨网段(跨机房)复制
Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
异步编程
代码性能不高
原文地址:https://www.cnblogs.com/bluespot/p/877329.html
最新文章
网页和查询的相关性
用定时中断来接收红外遥控信号
4.17 删除从其他表引用的记录
龙芯笔记本(电子工程专辑)
Linux下编译安装qemu和libvirt
以Qemu模拟Linux,学习Linux内核
忽然有一种感觉:云存储必须从系统级定制,所以必须对Linux相当熟悉。Windows下开发软件的模式已经过时了
Thinking in C++: 第1章 为什么C++会成功(改进了C的缺点,可复用C的知识与库,执行效率相当)
理解闭包的
javascript full screen 全屏显示 页面元素
热门文章
WinDBG中加载SOS和CLR
使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点
Cassandra
Python基础:模块
storm源码之storm代码结构【译】
避免每次输入bundler Exec命令
jQuery中的ready方法及实现按需加载css,js
ActiveMQ初体验
如何开展软件架构之需求分析2
4.16 删除重复记录
Copyright © 2011-2022 走看看