数组的常见的排序及查找操作
来源:互联网 发布:义隆单片机型号 编辑:程序博客网 时间:2024/05/21 12:50
-
数组中的各种查找排序方法总是搞混淆,所以在此对java中数组常用的排序查找操作的代码和一些原理做了一下简单的总结:
class Arr {public static void main(String args[]) {int arr[] = { 5, 3, 8, 2, 0, 9, 1, 7 };//35208179,Select(arr);printArr(arr);bubble(arr);printArr(arr);QuickSort(arr, 0, (arr.length-1));printArr(arr);System.out.println(halfSearch(arr,7));}public static int halfSearch(int arr[],int key){/* * 折半查找的前提是有序*/int min = 0,max = arr.length-1,mid;while(min <= max){mid = (min + max) >> 1;if(key > arr[mid]){min = mid + 1;}else if(key < arr[mid]){max = mid - 1;}elsereturn mid;}return -1;}public static void QuickSort(int arr[],int left,int right){/* * 快速排序是选择一个key值,首先和从最后一个元素从后向前比较, * 大于最后一个换位置,然后和第一个元素从前往后比较,小于第一个换位置, * 这样以此类推*/if (left < right){int tmp = partition(arr, left, right);QuickSort(arr, left, tmp);QuickSort(arr, tmp + 1, right);}}public static int partition(int arr[], int left, int right) {int i = 0, j = 0;int key = 0, tmp = 0;if (arr == null) {return 0;}i = left;j = right;key = arr[left];while (i < j) {while (arr[j] > key) {--j;}swap(arr,i,j);while (arr[i] < key) {i++;}swap(arr,i,j);}return i;}public static void bubble(int arr[]){/* * 冒泡排序是相邻的两个元素进行比较,如果符合条件换位*/for(int i = 0; i < arr.length-1; i++){for(int j = 0; j < arr.length-i-1; j++){if(arr[j]>arr[j+1]){swap(arr,j,j+1);}}}printArr(arr);}public static void Select(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]) { swap(arr,i,j);}}}printArr(arr); }public static void swap(int arr[],int i,int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void printArr(int arr[]) {for (int i : arr) {System.out.print(i + " ");}System.out.println();}}
- 数组的常见的排序及查找操作
- 数组的排序及查找
- php中常见数组排序函数的用法和详解及二分法查找、冒泡法查找
- 《黑马程序员》java笔记->【02】数组的常见操作:遍历,排序,查找
- javascript数组的排序及查找
- java数组中常见的排序和查找
- 面试中常见的数组的操作:遍历,最值,反转,冒泡排序,二分查找(附代码)
- 数组的常见操作:冒泡排序 选择排序与取最值
- java中几中常见的排序方式汇总及二分法查找
- 对数组的遍历及排序操作
- 数组的常见操作
- 数组的常见操作
- 数组的常见操作
- 数组的常见操作
- 数组的常见操作
- 数组的 查找 、排序、及字符串的应用
- 操作数组的常用方式二-----排序、查找
- PHP数组查找操作的函数及技巧
- 最短路径之Dijkstra算法详细讲解
- 程序设计基石与实践之C语言基本概念
- Linux iptables 防火墙 添加删除 端口 .
- 为何一个MFC程序会有时能正常运行,有时却不能正常运行呢? (内容是来自我的一个帖子)
- 写了一天,,真的是一天,但还是没AC 求指教!!!
- 数组的常见的排序及查找操作
- Web.xml配置详解
- 实例学习之仿点点博客
- GDI+ 画透明背景的字
- Ubuntu安装基础教程
- HDU 1159 Common Subsequence 最长公共子序列
- [MFC] Combo Box 控件向 Edit Contrl控件传输Combo Box下拉选项的字符串 [大三TJB_708]
- linux 页表
- 1、Alfresco 4.2.c开发环境的搭建-- alfresco 开发系列