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; j0  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  temparr[j-gap]; j-=gap){

arr[j] = arr[j-gap];

}

arr[j] = temp;

}

}

}

JAVA有拓扑排序的类库么

java标准类库里面没有,标准类库中的排序都使用的Connections类中的静态方法,而其中的排序算法要求是稳定的,而拓扑排序是不稳定的,所以是不会采用这种算法的

编写java程序:输入一组整数存放在数组中,比较并输出其中最大值和最小值,并将数组

public class Arr{

//数组

int[] arr = {3,1,6,4,5,10,2};

//对数组进行简单的排序

java.util.Arrays.sort(arr);

//输出最大值、最小值

System.out.println("最大值:" + arr[arr.length-1] +"\n最小值:" + arr[0]);

//从小到大输出

System.out.println(java.util.Arrays.toString(arr));

}


名称栏目:java拓扑排序源代码 拓扑排序算法代码
文章转载:http://myzitong.com/article/dogejgj.html