IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 常用排序算法 -> 正文阅读

[数据结构与算法]常用排序算法

冒泡:
public void bubbleSort(int[] srr, int len){
for(int i=0;i<len-1;i++){
for(int j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=arr[j];
}
}
}
}

选择排序:
public void selectSort(int[] arr){
int len=arr.length;
for(int i=0;i<n;i++){
int min=i;
for(int j=i+1;j<len;j++){
if(arr[min]>arr[j]){
min=j;
}
}
if(min!=i){
int temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
}
}

插入:
public void insertSort(int[] arr){
for(int bound=1;bound<arr.length;bound++){
int v=arr[bound];
int curr=bound-1;
for(;curr>=0;curr--){
if(arr[curr]>v){
arr[curr+1]=arr[curr];
}else{
break;
}
}
arr[curr+1]=v;
}
}
public void insertsort(int[] arr){
int len=arr.length;
for(int bound=1;bound<len;bound++){
int value=arr[bound];
int curr=bound-1;
for(;curr>=0;curr--){
if(arr[curr]>value){
arr[curr+1]=arr[curr];
}else{
break;
}
}
arr[curr]=value;
}
}
希尔排序
public void shellSort(int[] arr){
int gap=arr.length/2;
while(gap>1){
shellSortGap(arr,gap);
gap/=2;
}
shellSortGap(arr,1);
}

public void shellSortGap(int[] arr,int gap){
for(int bound=gap;bound<arr.length;bound++){
int val=arr[bound];
int cur=bound-gap;
for(;cur>=0;cur--){
if(arr[cur]>val){
arr[cur+gap]=arr[cur];
}else{
break;
}
}
arr[cur+gap]=value;
}
}

归并:
public void mergeSort(int[] arr){
mergeSortHelper(arr,0,arr.length);
}

public void mergeSortHelper(int[] arr,int low,int high){
if(high-low<=1){
return;
}
int mid=(low+high)/2;
mergeSortHelper(arr,0,mid);
mergeSortHelper(arr,mid,high);
merge(arr,low,mid,high);
}

public void merge(int[] arr,int low,int mid,int high){
int[] output=new int[high-low];
int outputindex=0;
int cur1=low;
int cur2=mid;
while(cur1<mid && vur2<high){
if(arr[cur1]<=arr[cur2]){
output[outputindex]=arr[cur1];
outputindex++;
cur1++;
}else{
output[outputindex]=arr[cur2];
outputindex++;
cur2++;
}
}
while(cur1<mid){
output[outputindex]=arr[cur1];
outputindex++;
cur1++;
}
while(cur2<high){
output[outputindex]=arr[cur2];
outputindex++;
cur2++;
}
for(int i=0;i<high-low;i++){
arr[i+low]=output[i];
}
}
//非递归
public void mergeByLoop(int[] arr){
int len=arr.length;
for(int gap=1;gap<len;gap*=2){
for(int i=0;i<len;i+=2*gap){
int low=i;
int mid=low+gap;
int high=i+2*gap;
if(mid>len){
mid=len;
}
if(high>len){
high=len;
}
merge(arr,low,mid,high);
}
}
}
快速排序:
public void quickSort(int[] arr){
int len=arr.length;
quickSortHelper(arr,0,len-1);
}

public void quickSortHelper(int[] arr,int left,int right){
if(left>=right){
return;
}
int middle=getMiddle(arr,left,right);
quickSortHelper(arr,left,middle-1);
quickSortHelper(arr,middle+1,high);
}

public void getMiddle(int[] arr,int left,int right){
int temp=arr[left];
while(left<right){
while(left<right &&arr[right]>temp){
right--;
}
arr[left]=arr[right];
while(left<right &&arr[left]<temp){
left++;
}
arr[right]=arr[left];
}
arr[left]=temp;
return left;
}
堆排序:
public void heapSort(int[] arr){
createHeap(arr);
for(int i=0;i<arr.length-1;i++){
swap(arr,0,arr.length-1-i);
shiftDown(arr,arr.length-1-i,0);
}
}

public void createHeap(int[] arr){
for(int i=(arr.length-1-1)/2;i>0;i--){
shiftDown(arr,arr.length,i);
}
}

public void shiftDown(int[] arr, int heaplength,int index){
int parent=index;
int child=index*2+1;
while(child < heaplength){
if(child+1<heaplength&&arr[child+1]>arr[child]){
child=child+1;
}
if(arr[child+1]>arr[parrent]){
swap(arr,child,parent);
}
parent=child;
child=2*parent+1;
}
}
?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:44:00  更:2021-07-13 17:45:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 19:41:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码