排序算法(冒泡,选择,快速)Java 实现
来源:互联网 发布:godaddy域名实名认证 编辑:程序博客网 时间:2024/05/16 01:39
冒泡 排序:
public static void Bubblesort(int [] a)
{for(int x=0;x<=a.length-1;x++)
{
for(int y=0;y<a.length-1-x;y++)
{
swapArrayAsc(a,y,y+1);
}
}
}
选择排序:
public static void SelectorSort(int [] a){
for(int x=0;x<=a.length-1;x++)
{
for(int y=x+1;y<=a.length-1;y++)
{
swapArrayAsc(a,x,y);
}
}
}
快速排序(While):
public static void quickSort(int[] a, int l, int r) {
int i = l, j = r, x = a[l];
if (l < r) {
while (i < j) {
while (i < j && a[j] >= x)//前面虽然while里判断过,但while最后还有个j--,j--之后可能会出现i=j的情况,所以if不能去掉。
j--;
if (i < j) {
a[i] = a[j];
// i++;
}
while (i < j && a[i] < x)
i++;
if (i < j) {
a[j] = a[i];
// j--;
}
}
a[i] = x;
if( i-l >1 )
quickSort(a, l, i - 1);
if( r-i >1 )
quickSort(a, i + 1, r);
}
}
快速排序(for)
private static void QuickSort(int[] array,int start,int end)
{
if(start<end)
{
int key=array[start];//初始化保存基元
int i=start,j;//初始化i,j
for(j=start+1;j<=end;j++)
{
if(array[j]<key)//如果此处元素小于基元,则把此元素和i+1处元素交换,并将i加1,如大于或等于基元则继续循环
{
int temp=array[j];
array[j]=array[i+1];
array[i+1]=temp;
i++;
}
}
array[start]=array[i];//交换i处元素和基元
array[i]=key;
QuickSort(array, start, i-1);//递归调用
QuickSort(array, i+1, end);
}
}
打印以及交换:
public static void printArray(int [] a)
{
System.out.print("[");
for(int i=0;i<=a.length-1;i++)
{
if(i!=a.length-1)
System.out.print(a[i]+",");
else System.out.print(a[i]+"]");
}
}
public static void swapArrayAsc(int [] a, int x,int y)//,boolean sortFlag)
{
if(a[x]>a[y])
{
int temp=a[x];
a[x]=a[y];
a[y]=temp;
}
}
-----------------------------------------------======================================---------------------------------------------------------------------
取最值
public static int getMaxArray(int [] a)
{
int max=0;
for(int x=0;x<=a.length-1;x++)
{
if (a[x]>a[max])
{
max=x;
}
}
return a[max];
}
public static int getMaxArray2(int [] a)
{
int max=a[0];
for(int x=0;x<=a.length-1;x++)
{
if (a[x]>max)
{
max=a[x];
}
}
return max;
}
二分查找法:
public static int halfSearchGetIndex(int [] a,int key)
{
int min=0,max=a.length-1,mid=(min+max)/2;
while(a[mid]!=key)
{
if(a[mid]<key)
{
max=mid-1;
}
else if(a[mid]>key)
{
min=mid+1;
}
if(max<min)
return -1;
mid=(min+max)/2;
}
return mid;
}
public static int halfSearchGetIndex2(int [] a,int key)
{
int min=0,max=a.length-1,mid=(min+max)/2;
while(min<=max)
{
mid=(min+max)/2;
if(a[mid]<key)
{
max=mid-1;
}
else if(a[mid]>key)
{
min=mid+1;
}
else return mid;
}
return -1;
}
- java实现冒泡、选择、快速排序算法
- java实现冒泡、选择、快速排序算法
- 冒泡、选择、快速排序算法(附java实现源码)
- 排序算法(冒泡,选择,快速)Java 实现
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- java简单实现冒泡、快速、选择、插入排序算法
- Java实现冒泡,快速,选择,插入排序算法
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,快速排序
- 排序算法复习(Java实现): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现): 插入,冒泡,选择,Shell,快速排序
- 排序算法总结(二)-------选择,堆,冒泡,快速,归并排序(java实现)
- 常见的排序算法(Java实现):冒泡、插入、选择、快速排序
- PHP实现插入、选择、冒泡、快速排序算法(转贴)
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- QString与char *之间的转换
- cocos2d-x lua 触摸事件
- hive on tez详细配置和运行测试
- iOS开发网络数据之AFNetworking使用
- iOS开发中线程通信
- 排序算法(冒泡,选择,快速)Java 实现
- RTP数据分析
- 解决"VC6.0的ClassView里不能显示类或成员变量"问题
- Xcode6中自动布局autolayout和sizeclass的使用
- jstl中<c:forEach>的用法
- C#第五次作业:开源项目“网页正文提取”的理解
- u-boot的Makefile分析
- CentOS 7 可动态切换运行级别,设置默认运行级别(启动方式)
- sudo:无法解析主机 解决方案