java常用排序算法 java各种排序算法_第1页
java常用排序算法 java各种排序算法_第2页
java常用排序算法 java各种排序算法_第3页
java常用排序算法 java各种排序算法_第4页
java常用排序算法 java各种排序算法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java常用排序算法排序是计算机程序中常见的操作之一。在日常编程中,我们经常需要对一组数据进行排序,以便更好地处理和使用这些数据。Java提供了各种排序算法,可以根据不同的需求选择合适的算法。本文将介绍Java中常用的几种排序算法。1.冒泡排序(BubbleSort)冒泡排序是一种简单的排序算法,它重复地遍历要排序的序列,比较相邻的元素,并按照规定的顺序交换它们。如果需要按照升序排序,那么每一轮遍历都会将序列中最大的元素冒泡到末尾。publicclassBubbleSort{

publicstaticvoidbubbleSort(int[]arr){

intn=arr.length;

for(inti=0;i<n-1;i++){

for(intj=0;j<n-i-1;j++){

if(arr[j]>arr[j+1]){

inttemp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

}

}2.选择排序(SelectionSort)选择排序是一种简单直观的排序算法。它的思路是每一次从待排序的数据中选择最小(或最大)的一个元素,放到序列的起始位置。经过一轮轮的比较和选择,最终得到排序好的序列。publicclassSelectionSort{

publicstaticvoidselectionSort(int[]arr){

intn=arr.length;

for(inti=0;i<n-1;i++){

intminIndex=i;

for(intj=i+1;j<n;j++){

if(arr[j]<arr[minIndex]){

minIndex=j;

}

}

inttemp=arr[minIndex];

arr[minIndex]=arr[i];

arr[i]=temp;

}

}

}3.插入排序(InsertionSort)插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。publicclassInsertionSort{

publicstaticvoidinsertionSort(int[]arr){

intn=arr.length;

for(inti=1;i<n;i++){

intkey=arr[i];

intj=i-1;

while(j>=0&&arr[j]>key){

arr[j+1]=arr[j];

j=j-1;

}

arr[j+1]=key;

}

}

}4.快速排序(QuickSort)快速排序是一种高效的排序算法,它采用了分治的思想。基本思路是选择一个基准元素,通过一趟排序将序列分成两个子序列,然后分别对这两个子序列递归进行排序,最终得到有序序列。publicclassQuickSort{

publicstaticvoidquickSort(int[]arr,intlow,inthigh){

if(low<high){

intpivotIndex=partition(arr,low,high);

quickSort(arr,low,pivotIndex-1);

quickSort(arr,pivotIndex+1,high);

}

}

privatestaticintpartition(int[]arr,intlow,inthigh){

intpivot=arr[low];

while(low<high){

while(low<high&&arr[high]>=pivot){

high--;

}

arr[low]=arr[high];

while(low<high&&arr[low]<=pivot){

low++;

}

arr[high]=arr[low];

}

arr[low]=pivot;

returnlow;

}

}5.归并排序(MergeSort)归并排序是一种稳定的排序算法,它采用了分治的思想。基本思路是将待排序的序列不断划分成两个子序列,直到每个子序列只有一个元素,然后将这些子序列两两合并,最终得到有序序列。publicclassMergeSort{

publicstaticvoidmergeSort(int[]arr,intlow,inthigh){

if(low<high){

intmid=(low+high)/2;

mergeSort(arr,low,mid);

mergeSort(arr,mid+1,high);

merge(arr,low,mid,high);

}

}

privatestaticvoidmerge(int[]arr,intlow,intmid,inthigh){

int[]temp=newint[high-low+1];

inti=low;

intj=mid+1;

intk=0;

while(i<=mid&&j<=high){

if(arr[i]<=arr[j]){

temp[k]=arr[i];

i++;

}else{

temp[k]=arr[j];

j++;

}

k++;

}

while(i<=mid){

temp[k]=arr[i];

i++;

k++;

}

while(j<=high){

temp[k]=arr[j];

j++;

k++;

}

for(intm=0;m<temp.length;m++){

arr[m+low]=t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论