学习笔记 关于冒泡排序 插入排序 快速排序

快速排序:选择一个值为key 然后让begin和end开始扫描,此时如果end遇到小于key的数停下,直到begin遇到比key大的值,此时两边交换数值,继续前进 直到相遇,此时将key与相遇的值互换,key左边都比他小,右边都比它大,将key的左右序列分别进行同样的操作,直到左右序列只剩一个数据或者左右序列不存在,停止。

代码:

package com.jk.Sort;

public class QuckSort1 {
    public static void main(String[] args) {
        int[] arr = new int[]{99, 97, 96, 95, 94, 92, 91, 90, 88, 78};
        int begin=0;
        int end=arr.length-1;
        int left=begin;
        int right=end;
        int key=begin;
        for (int i=0;i<=arr.length-1;i++){
            if(begin>end){
                break;
            }
            if (arr[end]>=arr[key]&&begin<end) {
            end--;
            }
            if(arr[begin]<=arr[key]&&begin<end){
                begin++;
            }
            int a=arr[begin];
            arr[begin]=arr[end];
            arr[end]=a;
//            if(begin==end){
//                int b=arr[end];
//                arr[end]=arr[key];
//                arr[key]=b;
//
//            }
            key=end;
        }
        for (int x=0;x<=9;x++){
            System.out.println(arr[x]);
        }
    }
}

冒泡排序:从第一个值开始与后面的值比较,比他小的就互换位置,遇到比他大的,选比他大的继续继续比较,直到最大的值在最右边

代码:

package com.jk.Sort;
//冒泡排序
public class Maopao {
    public static void main(String[] args) {
        int[] arr=new int[]{99,97,96,95,94,92,91,90,88,78};
        int k;
        for (int i=0;i<9;i++){
             for (int j=0;j<9-i;j++){
                  if(arr[j]>arr[j+1]){
                      k=arr[j];
                      arr[j]=arr[j+1];
                      arr[j+1]=k;
                  }
             }
        }
        for (int x=0;x<=9;x++){
            System.out.println(arr[x]);
        }
    }

}

插入排序:开始选取一个item,我们假设第一个数据已经有序,此时选取第二个值,遇到item大的元素,该元素往后移一位,直到遇到比item小的,把item插入到该元素后面,如果已排序元素均小于item,将它放在第0位,

代码:

package com.jk.Sort;

public class QuickSort {
    public static void main(String[] args) {
        int[] arr = new int[]{99, 97, 96, 95, 94, 92, 91, 90, 88, 78};
        for (int i = 0; i < arr.length - 1; i++) {
            int end = i;
            int tem = arr[end + 1];
            while (end >= 0) {
                if (tem < arr[end]) {
                    arr[end + 1] = arr[end];
                    end--;
                } else {
                    break;
                }
            }
            arr[end + 1] = tem;
        }
        for (int x = 0; x <= 9; x++) {
            System.out.println(arr[x]);
        }
    }
}
//插入排序  有序区 开始只有一个end=0; 后面for循环累加 有序区越来越大  从后往前扫描遇到比tem大的,比他大的就往后移,比他小的就退出循环,
// 把tem加在比他小的后面如果没有比tem小的 ,tem放在第一位 因为此时end=-1;所以end+1=0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值