目录
排序算法:冒泡排序排序算法:快速排序数组的复制、反转、查询(线性查找、二分查找)
排序算法:冒泡排序
public static void main(String
[] args
){
int[] arr
= new int[]{43,32,76,-98,0,64,32,15,108,-21,59};
for(int i
= 0;i
< arr
.length
- 1;i
++){
for(int j
= 0;j
< arr
.length
- 1 -i
;j
++){
if(args
[j
] > arr
[j
+1]){
int temp
= arr
[j
];
arr
[j
] = arr
[j
+1];
arr
[j
+1] = temp
;
}
}
}
for(int i
= 0;i
< arr
.length
;i
++){
System
.out
.print(arr
[i
]+"\t");
}
}
排序算法:快速排序
通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。
public class QuickSort {
private static void swap(int[] data
, int i
, int j
) {
int temp
= data
[i
];
data
[i
] = data
[j
];
data
[j
] = temp
;
}
private static void subSort(int[] data
, int start
, int end
) {
if (start
< end
) {
int base
= data
[start
];
int low
= start
;
int high
= end
+ 1;
while (true) {
while (low
< end
&& data
[++low
] - base
<= 0)
;
while (high
> start
&& data
[--high
] - base
>= 0)
;
if (low
< high
) {
swap(data
, low
, high
);
} else {
break;
}
}
swap(data
, start
, high
);
subSort(data
, start
, high
- 1);
subSort(data
, high
+ 1, end
);
}
}
public static void quickSort(int[] data
){
subSort(data
,0,data
.length
-1);
}
public static void main(String
[] args
) {
int[] data
= { 9, -16, 30, 23, -30, -49, 25, 21, 30 };
System
.out
.println("排序之前:\n" + java
.util
.Arrays
.toString(data
));
quickSort(data
);
System
.out
.println("排序之后:\n" + java
.util
.Arrays
.toString(data
));
}
}
数组的复制、反转、查询(线性查找、二分查找)
public static void main(String
[] args
){
String arr
= new String[]{"AA","BB","JJ","GG","MM","DD"};
String
[] arr1
= new String[arr
.length
];
for(int i
= 0;i
<arr1
.length
;i
++){
arr1
[i
] = arr
[i
];
}
for(int i
=0;i
< arr
.length
/ 2;i
++){
String temp
=arr
[i
];
arr
[i
] = arr
[arr
.length
- i
-1];
arr
[arr
.length
- i
-1] = temp
;
}
for(int i
=0;j
= arr
.length
-1;i
<j
;i
++,j
--){
String temp
=arr
[i
];
arr
[i
] = arr
[j
];
arr
[j
] = temp
;
}
for(int i
= 0;i
< arr
.length
;i
++){
System
.out
.print(arr
[i
]+"\t");
}
System
.out
.println();
String dest
= "BB";
boolean isFlag
= true;
for(int i
=0;i
<arr
.length
;i
++){
if(dest
.equels(arr
[i
])){
System
.out
.println("找到指定的元素,位置为:"+i
);
isFlag
= false;
break;
}
}
if(isFlag
){
System
.out
.println("很遗憾没有找到哦!");
}
int arr2
= new int[]{-98,-34,2,34,66,79,106,214,333};
int dest1
= -34;
int head
= 0;
int end
= arr2
.length
-1;
boolean isFlag1
= true;
while(head
< end
){
int middle
= (head
+ end
)/2;
if(dest1
== arr2
[middle
]){
System
.out
.println("找到指定的元素,位置为:"+middle
);
isFlag1
= false;
break;
}else if(arr2
[middle
] > dest1
){
end
= middle
- 1;
}else{
head
= middle
+ 1;
}
}
if(isFlag
){
System
.out
.println("很遗憾没有找到哦!");
}
}
好了,我亲爱的读者朋友,以上就是本文的全部内容了!!!
觉得有点用记得给我点赞哦!
通过坚持不懈地学习,持续不断地输出,你的编程基本功算得上是突飞猛进。
为了帮助更多的程序员,专注于分享有趣的 Java 技术编程和有益的程序人生。一开始,阅读量寥寥无几,关注人数更是少得可怜。但随自己的不断努力,阅读量和关注人都在猛烈攀升。
绝对不容错过,期待与你的不期而遇。