java 实现四种常用排序
2018-03-10 14:20
246 查看
4种排序算法
1.冒泡排序
冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 [1]
public static void bubbling() {
int[] arr2 = {8,13,5,6,11,2,1};
for(int i=0;i<arr2.length;i++) {
for(int j=0;j<arr2.length-1-i;j++) {
if(arr2[j]>arr2[j+1]) {
int temp = arr2[j];
arr2[j]=arr2[j+1];
arr2[j+1]= temp;
}
}
}
System.out.println(Arrays.toString(arr2));
}
2.二分查找
二分查找算法也称为折半搜索、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。请注意这种算法是建立在有序数组基础上的。
①找出位于数组中间的值,并存放在一个变量中(为了下面的说明,变量暂时命名为temp); ②需要找到的key和temp进行比较; ③如果key值大于temp,则把数组中间位置作为下一次计算的起点;重复① ②。 ④如果key值小于temp,则把数组中间位置作为下一次计算的终点;重复① ② ③。 ⑤如果key值等于temp,则返回数组下标,完成查找。public class work03 {public static void main(String[] args) {
int[] nums= {5,9,1,4,23,7};
int i = binSearch(nums,1);
System.out.println(i);
}
public static int binSearch(int srcArray[], int key) {
int mid = srcArray.length / 2;
if (key == srcArray[mid]) {
return mid;
}
int start = 0;
int end = srcArray.length - 1;
while (start <= end) {
mid = (end - start) / 2 + start;
if (key < srcArray[mid]) {
end = mid - 1;
} else if (key > srcArray[mid]) {
start = mid + 1;
} else {
return mid;
}
}
return -1;
}
}
3.快速排序
//快速public static void fast(int [] arr2,int start,int end) {
int[] arr2 = {8,13,5,6,11,2,1};
sort(arr2,start,end);
System.out.println("快速排序"+Arrays.toString(arr2));
}
public static void sort(int a[],int start,int end) {
int i,j,index;
if(start>end) {
return;
}
i=start;
j=end;
index=a[i]; // 基准值
//从表中间往两边扫描
while(i<j) {
while(i<j && a[j]>=index) {
j--;
}
if(i
a589
<j) {
a[i]=a[j]; // 用比基准小的记录替换低位记录
i++;
}
while(i<j && a[i]<index) {
i++;
}
if(i<j) {
a[j]=a[i];// 用比基准小的记录替换低位记录
j--;
}
System.out.println(Arrays.toString(a));
}
System.out.println("i"+i);
a[i]=index;//基准值替换回a[i]
sort(a, start, i - 1); // 对低子表进行递归排序
sort(a, i + 1, end); // 对高子表进行递归排序
}
4.选择排序
//选择排序int[] arr2 = {8,13,5,6,11,2,1};public static void xuanze(int[] arr2) {
for(int i=0;i<arr2.length-1;i++) {
int k = i;
for(int j=k+1;j<arr2.length;j++) {
if(arr2[k]>arr2[j]) {
k=j;
}
}
if(i!=k) {
int temp = arr2[i];
arr2[i]=arr2[k];
arr2[k]=temp;
}
}
相关文章推荐
- 常用排序、查找算法java实现
- java常用四种排序源代码
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- Java实现四种排序:桶排序,冒泡排序,选择排序,快速排序
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- java实现四种常用排序算法
- java中各种常用排序实现(直接插入排序、直接选择排序、堆排序、冒泡排序、快速排序和归并排序)
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
- Java常用的九种排序方法及代码实现
- 常用算法Java实现之选择排序
- 四种常用排序方法的基本思想和PHP实现源代码
- 常用数组排序方法(Java实现)
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- 常用排序的java实现
- Java实现8中常用的排序
- java实现常用的八种内排序方法
- 常用排序java实现
- 一步步学习数据结构和算法之常用排序效率分析及java实现
- 插入排序,选择排序,冒泡排序等常用排序算法(java实现)
- 【常用排序算法】选择排序(Java实现)