当前位置: 首页 > 后端技术 > Java

【Java算法系列(一)】八种排序算法(一)

时间:2023-04-01 20:08:27 Java

〇、排序算法简介排序:将一组数据按指定顺序排列的过程。排序的种类:内部排序:所有需要处理的数据都加载到内存中进行排序。外置排序:由于数据量大,不可能把所有的数据都加载到内存中,所以需要外置内存进行排序。我们研究的排序算法主要是内部排序算法。其中,内排序又可分为八种排序算法:冒泡排序、简单选择排序(简称选择排序)、直接插入排序(简称插入排序)、希尔排序、快速排序、归并排序、基数排序、和堆排序:本文将介绍冒泡排序、选择排序、插入排序和快速排序。下一篇文章将介绍希尔排序、归并排序、基数排序和堆排序。1.冒泡排序的基本思想:从前到后对待排序序列,依次比较相邻元素的值,如果发现倒序则交换,使得值较大的元素逐渐从前向后移动,就像水下的气泡逐渐向上上升。对于待排序数组[3,9,-1,10,20],冒泡排序算法的图形化过程如下:由此,冒泡排序算法的代码可以写成:publicstaticvoidbubbleSort(int[]arr){for(inti=0;iarr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=温度;}}}}这段代码可以优化:publicstaticvoidbubbleSort(int[]arr){for(inti=0;iarr[j+1]){flag=true;温度=arr[j];arr[j]=arr[j+1];arr[j+1]=温度;}}if(!flag){//优化中断;}}}二、选择排序的基本思想:按照规定的规则从待排序数据中选择一个元素,然后按照规定交换位置,实现排序。对于待排序数组[3,9,-1,10,20],选择排序算法的图解过程如下:由此,选择排序算法的代码可以写成:publicstaticvoidselectSort(int[]arr){for(inti=0;iarr[j]){minIndex=j;}}if(minIndex!=i){inttemp=arr[minIndex];arr[minIndex]=arr[i];arr[i]=温度;}}}3.插入排序的基本思想:对于待排序的元素,通过插入找到元素合适的位置,实现排序。对于待排序数组[3,9,-1,10,20],插入排序算法的图解过程如下:由此,插入排序算法的代码可以写成:publicstaticvoidinsertSort(int[]arr){for(inti=1;i=0;j--){if(insert=0&&insertVal=pivot)r--;//当右指针元素不小于枢轴元素时,继续向左移动if(l<=r){inttemp=arr[l];arr[l]=arr[r];arr[r]=温度;}}arr[左]=arr[r];//arr[r]是枢轴的位置arr[r]=pivot;如果(左l)quickSort(arr,l,right);}