




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路旅客运输服务铁路旅客运输服务质量规范72课件
- 双语客运值班员车站的管理组织课件
- 铁路工程安全技术石家庄铁路33课件
- 外墙测量方案模板范本
- ARM Cortex-M3嵌入式开发及应用教与学 课件 第3、4章 STM32F103学习平台;LED灯控制与KEIL MDK工程框架
- 市场营销咨询顾问合同范本
- 房屋修缮工程合同协议
- 宿州市重点中学2025届初三下学期第二次考试英语试题试卷含答案
- 暂定场地租赁合同书
- 南宁理工学院《人工神经网络》2023-2024学年第二学期期末试卷
- 物业撤场方案
- 2025年陕西农业发展集团有限公司(陕西省土地工程建设集团)招聘(200人)笔试参考题库附带答案详解
- 2025年信阳职业技术学院单招职业技能测试题库附答案
- 经皮冠状动脉介入治疗术后护理
- 制造业安全管理提升措施
- 《婴儿营养配方课件:如何选择合适的奶粉》
- 事故隐患内部报告奖励制度
- 2025年广东韶关南雄市卫生健康局下属事业单位招聘工作人员67人历年高频重点提升(共500题)附带答案详解
- 抚养费纠纷答辩状范文
- 《专业技术人才管理》课件
- 大班韵律《朱迪警官破案记》
评论
0/150
提交评论