给一个4行5列的2维数组编码实现从小到大排序!
要求:时间复杂度最小!
要求:时间复杂度最小!
解决方案 »
- 会用Netbeans的来········
- Java能编写Linux图形界面下的应用软件吗?
- 访问匿名内部类的方法
- 如何在程序中统计两日期间的所有日期
- form中加enctype="multipart/form-data",出现乱码的问题
- 解释一下这句语句什么意思
- 请教我这样的环境安装weblogic是否合适?....
- 为什么我在http://www.eclipse.org下载了eclipse后,点击eclipse.exe却没有任何效果?
- 急寻下载网地址!
- jbuilder6用了几天后,再起动时出现unknown license file format,如何解决
- 关于继承的问题
- 关于匿名类 extends的问题
public class T {
public static void main(String[] args) {
int[][] a = { { 9, 5, 8, 6 }, { 7, 5, 8, 1 }, { 3, 9, 2, 5 },
{ 4, 6, 9, 2 } };
int[] str = new int[4];
for (int j = 0; j < 4; j++) {
for (int i = 0; i < 4; i++) {
str[i] = a[j][i];
}
Arrays.sort(str);
for (int i = 0; i < 4; i++) {
a[j][i] = str[i];
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.print(a[i][j] + ", ");
}
System.out.print("\n");
}
}
}
理论上nlog(n)是最优的了啊。
public static void main(String[] args) {
int[][] a = { { 39, 25, 98, 16,11 }, { 77, 55, 86, 11,31 }, { 33, 29, 23, 50 ,41}, { 14, 16, 19, 12 ,51} };
int[] str = new int[20];
int n = 0;
for (int j = 0; j < 4; j++) {
for (int i = 0; i < 5; i++) {
str[n++] = a[j][i];
}
}
Arrays.sort(str);
n = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(str[n++] + ", ");
}
System.out.print("\n");
}
}
}
对指定的 int 型数组按数字升序进行排序。该排序算法是一个经过调优的快速排序法,改编自 Jon L. Bentley 和 M. Douglas McIlroy 合著的《Engineering a Sort Function", Software-Practice and Experience》Vol. 23(11) P. 1249-1265 (November 1993)。
此算法在许多数据集上提供 n*log(n) 性能,这导致其他快速排序会降低二次型性能。
int[][] a = {
{ 9, 5, 8, 6 },
{ 7, 5, 8, 1 },
{ 3, 9, 2, 5 },
{ 4, 6, 9, 2 }
};
int str = 0;
for (int b =0;b<19;b++){
for (int j = 0; j < 4; j++) {
for (int i = 0; i < 4; i++) {
if(i==3&&j<3){
if(a[j][i]>a[j+1][0]){
str=a[j][i];
a[j][i]=a[j+1][0];
a[j+1][0]=str;
}
}else if(i<3){
if(a[j][i]>a[j][i+1]){
str=a[j][i];
a[j][i]=a[j][i+1];
a[j][i+1]=str;
}
} }
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.print(a[i][j] + ", ");
}
System.out.print("\n");
}
}
我贴出来!不敢说是最优的!但至少是一个解决方法!