//合并排序
public class mergesort {
//对数组进行划分
public static int[] huafen(int[] m){
int n = m.length/2;
int[] s = new int[m.length];
if(n>=1) {//在划分为单个数据之前一直划分
int len = m.length - n;
int[] U = new int[n];//U放置前n个数据
int[] V = new int[len];//V放置后面数据
for (int i = 0; i < n; i++) {
U[i] = m[i];
V[i] = m[n + i];
}
if (len > n) {
V[len - 1] = m[m.length - 1];
}
huafen(U);
huafen(V);
m = merge(U,V,m);//对划分数据进行有序合并
}
return m;
}
//有序合并
public static int[] merge(int[] m1, int[] m2, int[] s){
int n1 = m1.length;
int n2 = m2.length;
int i = 0, j =0, k =0;
while(i< n1 && j < n2){
if(m1[i] <= m2[j]){
s[k] = m1[i];
i++;
}else{
s[k] = m2[j];
j++;
}
k++;
}
if(i >= n1 ){
for(int c = j; c < n2; c++){
s[k++] = m2[c];
}
}else{
for(int c = i; c< n1; c++){
s[k++] = m1[c];
}
}
return s;
}
public static void main(String[] args) {
int[] m = {27,10,12,20,25,13,15,22};
int[] s = huafen(m);
for(int i = 0; i < s.length;i ++){
System.out.println(s[i]);
}
}
}
//快速排序
public class quicksort {
public static int[] sort(int[] m, int low, int high){
if(low < high) {
int s = m[low];//选择第一项作为比较的值
int j = low;
for (int i = low + 1; i < m.length; i++) {
if (m[i] < s) {
j++;
int temp = m[i];
m[i] = m[j];//m[j]为第一个不小于s的值
m[j] = temp;
}
}
int temp = m[low];
m[low] = m[j];
m[j] = temp;//将比较的值与m[j]交换
sort(m,low,j-1);//对m[j]前面数据在进行操作
sort(m,j+1,high);
}
return m;
}
public static void main(String[] args) {
int[] m = {15,22,13,27,12,10,20,25};
int[] n = sort(m,0,7);
for(int i = 0; i < n.length; i ++){
System.out.println(n[i]);
}
}
}
java实现排序
最新推荐文章于 2024-05-02 20:50:22 发布