public class MyFirstApp
{
public static void main(String[] args)
{
System.out.print("Hello world")
}
}
“hello world”就是应该是所有学java的新手看的第一个代码了。如果是零基础的新手朋友们可以来我们的java实验班试听,有免费的试听课程帮助学习java必备基础知识,有助教老师为零基础的人提供个人学习方案,学习完成后有考评团进行专业测试,帮助测评学员是否适合继续学习java,15天内免费帮助来报名体验实验班的新手快速入门java,更好的学习java!
给你介绍4种排序方法及源码,供参考
1.冒泡排序
主要思路: 从前往后依次交换两个相邻的元素,大的交换到后面,这样每次大的数据就到后面,每一次遍历,最大的数据到达最后面,时间复杂度是O(n^2)。
public static void bubbleSort(int[] arr){
for(int i =0 i < arr.length - 1 i++){
for(int j=0 j < arr.length-1 j++){
if(arr[j] > arr[j+1]){
arr[j] = arr[j]^arr[j+1]
arr[j+1] = arr[j]^arr[j+1]
arr[j] = arr[j]^arr[j+1]
}
}
}
}
2.选择排序
主要思路:每次遍历序列,从中选取最小的元素放到最前面,n次选择后,前面就都是最小元素的排列了,时间复杂度是O(n^2)。
public static void selectSort(int[] arr){
for(int i = 0 i <arr.length -1 i++){
for(int j = i+1 j < arr.length j++){
if(arr[j] < arr[i]){
arr[j] = arr[j]^arr[i]
arr[i] = arr[j]^arr[i]
arr[j] = arr[j]^arr[i]
}
}
}
}
3.插入排序
主要思路:使用了两层嵌套循环,逐个处理待排序的记录。每个记录与前面已经排好序的记录序列进行比较,并将其插入到合适的位置,时间复杂度是O(n^2)。
public static void insertionSort(int[] arr){
int j
for(int p = 1 p < arr.length p++){
int temp = arr[p] //保存要插入的数据
//将无序中的数和前面有序的数据相比,将比它大的数,向后移动
for(j=p j>0 && temp <arr[j-1] j--){
arr[j] = arr[j-1]
}
//正确的位置设置成保存的数据
arr[j] = temp
}
}
4.希尔排序
主要思路:用步长分组,每个分组进行插入排序,再慢慢减小步长,当步长为1的时候完成一次插入排序, 希尔排序的时间复杂度是:O(nlogn)~O(n2),平均时间复杂度大致是O(n^1.5)
public static void shellSort(int[] arr){
int j
for(int gap = arr.length/2 gap > 0 gap/=2){
for(int i = gap i < arr.length i++){
int temp = arr[i]
for(j = i j>=gap && temp<arr[j-gap] j-=gap){
arr[j] = arr[j-gap]
}
arr[j] = temp
}
}
}