数组排序算法
来源:互联网 发布:方正飞腾软件下载 编辑:程序博客网 时间:2024/06/05 19:27
1、选择排序算法
package tan;public class selectSort {/**选择排序算法 * j=i+1;表示前后比较 * i < arr.length-1 最后一个角标元素没有必要比较了,-1是为了减少一次比较 * @param arr */public static void selectsort(int[] arr) {for (int i = 0; i < arr.length-1; i++) {for (int j = i + 1; j < arr.length ; j++) {//位置互换if (arr[i] > arr[j]) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}public static void main(String[] args) {int[] a = { 21, 23, 14, 46, 75, 92, 8 };System.out.println("排序之前:");printArray(a);selectsort(a);System.out.println("排序之后:");printArray(a);} /** *封装 打印数组的功能函数 * @param arr */public static void printArray(int[] arr) {System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i != arr.length - 1) {System.out.print(arr[i] + ",");} else {System.out.println(arr[i] + "]");}}}}
2、冒泡排序
相邻的两个元素进行比较,如果条件符合就换位
记忆口诀:N个数字来排队,两两相比小靠前,外层循环N-1,内层循环N-1-i;
package tan;import java.util.Arrays;public class TestArraySort {/** * 选择排序算法 j=i+1;表示前后比较 i < arr.length-1 最后一个角标元素没有必要比较了,-1是为了减少一次比较 * * @param arr */public static void selectsort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) {// 位置互换if (arr[i] > arr[j]) {/* * int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; */swap(arr, i, j);}}}}/** * 冒泡排序算法 j<arr.length-i-1;其中-i是让每一次比较的元素减少,-1是为了防止角标越界。 * */public static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length - i - 1; j++) {if (arr[j] > arr[j + 1]) {swap(arr, j, j + 1);}}}}/** * 位置置换功能函数 * * @param arr * @param a * @param b */public static void swap(int[] arr, int a, int b) {int temp = arr[a];arr[a] = arr[b];arr[b] = temp;}/** * 封装 打印数组的功能函数 * * @param arr */public static void printArray(int[] arr) {System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i != arr.length - 1) {System.out.print(arr[i] + ",");} else {System.out.println(arr[i] + "]");}}}public static void main(String[] args) {int[] a = { 21, 23, 14, 46, 75, 92, 8 };System.out.println("排序之前:");printArray(a);/* selectsort(a); */bubbleSort(a);printArray(a);/* * bubbleSort(a); System.out.println("排序之后:"); printArray(a); *//* * System.out.println("开发中最常用的是:"); Arrays.sort(a); printArray(a); */}}
3、折半查找算法
折半查找:必须要保证该数组为有序的
package tan;public class Test {public static void main(String[] args) {int []a={1,3,4,6,7,9,12};//int index=getIndex(a, 6);int index=insertSort(a, 5);System.out.println("index="+index);}//折半查找方法一public static int halfSearch(int arr[],int key){int min=0;int max=arr.length-1;int mid=(max+min)/2;while(arr[mid]!=key){if(key>arr[mid]){min=mid+1;}else if(key<arr[mid]){max=mid-1;}if(min>max){return -1;}mid=(max+min)/2;}return mid;}//折半查找方法二public static int halfSearch2(int arr[],int key){int min=0,max=arr.length-1,mid;while(min<=max){mid=(max+min)>>1;//右移一位表示除以2if(key>arr[mid]){min=mid+1;}else if(key<arr[mid]){max=mid-1;}else{return mid;}}return -1;}//插入排序:通过折半查找的形式找出要插入的元素在数组中的位置,如果该元素存在则在该位置插入,否则返回最小角标值public static int insertSort(int arr[],int key){int min=0,max=arr.length-1,mid;while(min<=max){mid=(max+min)>>1;//右移一位表示除以2if(key>arr[mid]){min=mid+1;}else if(key<arr[mid]){max=mid-1;}else{return mid;}}return min;}//定义查找功能,获取key第一次出现在数组中的位置,返回-1表示该key不存在public static int getIndex(int arr[],int key){for(int i=0;i<arr.length;i++){if(arr[i]==key){return i;} }return -1;}}
0 0
- 一种数组排序算法
- 冒泡算法 ,数组排序
- 常用数组排序算法
- 【算法练习】数组排序
- 冒泡算法排序数组
- 算法学习 数组排序
- 数组排序算法
- 数组排序算法
- 常用数组排序算法
- 数组的排序算法
- 数组的排序算法
- Java数组排序算法
- 数组的排序算法
- 数组排序算法
- 数组及排序算法
- 数组排序算法
- 数组常用排序,查找算法
- 数组排序的常用算法
- 外观模式Facade(结构型)
- PM、PD、UE与UI 分别是什么?有什么关系?(转)
- 学习博客
- Spark源码分析之-deploy模块
- 设置vim自动换行,自动折行
- 数组排序算法
- 职场上一个人情商高的十种表现
- js 锚点平滑定位
- 图像滤波常见方法原理总结及VC下实现
- 优秀的开发和测试人员是什么样的?
- 阿尔泰哈地方哈地方哈儿童哈儿童
- oracle 11g 无法导出空表解决方法
- 工厂模式
- 常用SQL语句/时间格式