我是靠谱客的博主 阔达故事,最近开发中收集的这篇文章主要介绍三大排序的总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、冒泡排序

①通过比较数组中相邻的两个元素的大小,如果前一个数比后一个数大,我们就让它们交换(交换是通过再一次引入一个新的变量实现的)

②每一大轮结束时,都会产生一个最大的或者是最小的数(比如第一大轮就是拿数组的第一个数进行循环操作)

③下一大轮可以少一次排序

下面是代码的实现

for (int i = 0; i < arr.length - 1; i++) {
   //外层循环:是我们要循环的轮数
   for (int j = 0; j < arr.length - 1 - i; j++) {
   //内层循环:交换元素
       if (arr[j] > arr[j + 1]) {
   //这种判断是从小到大排的方式,改变条件就能变成从大到小排列
           int temp = arr[j];
           arr[j] = arr[j + 1];
           arr[j + 1] = temp;
     
}
 
}
}

优化部分:当一个数组在没有执行完循环之前就已经排好序了,那么为了使时间更加优化,可以采用下面的方法

for (int i = 0; i < arr.length - 1; i++) {
   boolean isFlag = false;
 //新增一个boolean型的变量,当不需要排序时,直接跳出内层循环
   for (int j = 0; j < arr.length - 1 - i; j++) {
       if (arr[j] > arr[j + 1]) {
           int temp = arr[j];
           arr[j] = arr[j + 1];
           arr[j + 1] = temp;
           isFlag = true;
     
}
       if (isFlag == false){
           break;
     
}
 
}
}

二、选择排序

①首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

②再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

③重复第二步,直到所有元素均排序完毕。

下面是代码的实现

for (int i = 0; i < arr.length - 1; i++) {
   //外层循环依旧是循环的轮数
   int min = i;
   for (int j = i + i; j < arr.length; j++) {
       //让i与其他的剩下的所有数进行比较
       if (arr[j] < arr[min]) {
           min = j;
     
}
 
}
   //如果每次比较出现了新的最小的数,就交换元素
   if (min != i) {
       int temp = arr[i];
       arr[i] = arr[min];
       arr[min] = temp;
 
}
}

三、插入排序

①将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

②从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

for (int i = 1;i < arr.length;i++){
// 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
           int temp = arr[i];
   // 记录要插入的数据,temp只是一个临时变量用来储存数的
           int j = i;
    // 从已经排序的序列最右边的开始比较,找到比其小的数
           while (j>0 && temp < arr[j-1]){
               arr[j] = arr[j-1];
               j--;
         
}
    // 存在比其小的数,插入
           if (i!=j){
               arr[j] = temp;
         
}
         
}
       for (int k = 0;k < arr.length;k++){
           System.out.print(arr[k]+"
");
     
}

最后

以上就是阔达故事为你收集整理的三大排序的总结的全部内容,希望文章能够帮你解决三大排序的总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部