常见的排序算法—选择,冒泡,插入,快速,归并 太久没看代码了,最近打算复习一下java , 又突然想到了排序算法,就把几种常见的排序算法用java敲了一遍,这里统一将无序的序列从小到大排列 。
选择排序是一种简单直观的排序算法 。它的工作原理是:第一次从待排序的数据元素中选出最小的一个元素 , 存放在序列的起始位置 , 然后再从剩余的未排序元素中寻找到最小元素 , 继续放在下一个位置,直到待排序元素个数为0 。
选择排序代码如下:
public void Select_sort(int[] arr) {
int temp,index;
for( int i=0;i10;i++) {
index = i;
for(int j = i + 1 ; j10 ; j++) {
if(arr[j]arr[index])
index = j;
}
/*
temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
*/
swap(arr,i,index);
}
System.out.print("经过选择排序后:");
for(int i = 0 ; i10 ; i++)
System.out.print( arr[i] +" ");
System.out.println("");
}
冒泡排序是一种比较基础的排序算法,其思想是相邻的元素两两比较,较大的元素放后面,较小的元素放前面,这样一次循环下来,最大元素就会归位,若数组中元素个数为n , 则经过(n-1)次后,所有元素就依次从小到大排好序了 。整个过程如同气泡冒起,因此被称作冒泡排序 。
选择排序代码如下:
public void Bubble_sort(int[] arr) {
int temp;
for(int i = 0 ; i9 ; i++) {
for(int j = 0 ; j10 - i - 1 ;j++) {
if(arr[j]arr[j+1]) {
/*
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
*/
swap(arr,j,j+1);
}
}
}
System.out.print("经过冒泡排序后:");
for(int i = 0 ; i10 ; i++)
System.out.print( arr[i] +" ");
System.out.println("");
}
插入排序也是一种常见的排序算法,插入排序的思想是:创建一个与待排序数组等大的数组,每次取出一个待排序数组中的元素,然后将其插入到新数组中合适的位置,使新数组中的元素保持从小到大的顺序 。
插入排序代码如下:
public void Insert_sort(int[] arr) {
int length = arr.length;
int[] arr_sort = new int[length];
int count = 0;
for(int i = 0;ilength; i++) {
if(count == 0) {
arr_sort[0] = arr[0];
}else if(arr[i] = arr_sort[count - 1]) {
arr_sort[count] = arr[i];
}else if(arr[i]arr_sort[0]) {
insert(arr,arr_sort,arr[i],0,count);
}else {
for(int j = 0;jcount - 1; j++) {
if(arr[i] = arr_sort[j]arr[i]arr_sort[j+1]) {
insert(arr,arr_sort,arr[i],j+1,count);
break;
}
}
}
count++;
}
System.out.print("经过插入排序后:");
for(int i = 0 ; i10 ; i++)
System.out.print( arr_sort[i] +" ");
System.out.println("");
}
public void insert(int[] arr,int[] arr_sort,int value,int index,int count) {
for(int i = count; iindex; i--)
arr_sort[i] = arr_sort[i-1];
arr_sort[index] = value;
}
快速排序的效率比冒泡排序算法有大幅提升 。因为使用冒泡排序时,一次外循环只能归位一个值,有n个元素最多就要执行(n-1)次外循环 。而使用快速排序时,一次可以将所有元素按大小分成两堆 , 也就是平均情况下需要logn轮就可以完成排序 。
快速排序的思想是:每趟排序时选出一个基准值(这里以首元素为基准值),然后将所有元素与该基准值比较 , 并按大小分成左右两堆,然后递归执行该过程,直到所有元素都完成排序 。
public void Quick_sort(int[] arr, int left, int right) {
if(left = right)
return ;
推荐阅读
- 兼容sqlserver7,兼容模式怎么设置
- jquery插件调用方法,jQuery插件下载
- Linux的Ex命令,linux中exec
- 怎么样微信开直播带货,怎么样微信开直播带货卖货
- go语言内存泄露排查 go语言内存不断升高
- jquery卡片展现数据,jquery选项卡
- 电商运营如何谈快递,电商运营如何谈快递业务
- 剑术格斗游戏视频,剑术格斗教学视频
- php原生插入数据库 php数据库写入实例