排序算法(一)


package sort;

public class Sort {
public static void bubbleSort(int[] numbers){
for(int i = numbers.length -1 ;i>0;i--){
for(int j = 0;j<i;j++){
if(numbers[j] > numbers[j+1]){
swap(numbers, j, j+1);
}
}
}
System.out.println("冒泡排序:");
for (int number : numbers) {
System.out.print(number + " ");
}
System.out.println();
}
public static void insertSort(int[] numbers){
for(int i = 1;i<numbers.length;i++){
if(numbers[i] < numbers[i-1]){
int temp = numbers[i];
int j = i-1;
for(; (j>=0) &&(temp < numbers[j]);j--){
numbers[j+1] = numbers[j];
}
numbers[j+1] = temp;
}
}
System.out.println("插入排序:");
for (int number : numbers) {
System.out.print(number + " ");
}
System.out.println();
}
public static int[] mergeSort(int[] numbers,int start,int end){
if(start < end){
int mid = (start + end)/2;

mergeSort(numbers, start, mid);
mergeSort(numbers, mid+1, end);
merge(numbers, start, mid, mid+1, end);
}
return numbers;
}
public static void selectSort(int[] numbers){
int min;
int mink;
for(int i = 0;i<numbers.length;i++){
min = numbers[i];
mink = i;
for(int j = i;j<numbers.length;j++){
if(numbers[j] < min){
min = numbers[j];
mink = j;
}
}
if(!(min == numbers[i])){
numbers[mink] = numbers[i];
numbers[i] = min;
}
}
System.out.println("选择排序:");
for (int i : numbers) {
System.out.print(i + " ");
}
System.out.println();
}

private static void merge(int[] numbers,int start1,int end1,int start2,int end2){
int i = start1,j = start2;
int k = 0;
int temp[] = new int[end2-start1+1];
while(i <= end1 && j <= end2){
if(numbers[i] <= numbers[j]){
temp[k++] = numbers[i++];
}else{
temp[k++] = numbers[j++];
}
}
while(i <= end1){
temp[k++] = numbers[i++];
}
while(j <= end2){
temp[k++] = numbers[j++];
}

for(int m = 0; m < temp.length;m++){
numbers[start1 + m] = temp[m];
}
}
private static void swap(int[] numbers,int index1,int index2){
int temp = numbers[index1];
numbers[index1] = numbers[index2];
numbers[index2] = temp;
}
public static void main(String[] args) {
int[] numbers = {456,845,343,421,256,487,487,690,558,455,658,466,677,788,643};

int[] result =mergeSort(numbers, 0, numbers.length-1);
System.out.println("归并排序:");
for (int i : result) {
System.out.print(i + " ");
}
System.out.println();
bubbleSort(numbers);
selectSort(numbers);
insertSort(numbers);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值