Java算法之排序(快速,冒泡,归并,选择)
来源:互联网 发布:淘宝证书安装 编辑:程序博客网 时间:2024/06/05 08:54
下面是个人整理的几种排序算法,不算太难,有一定基础的认真看看都可理解。归并算法思想比较简单,但在写代码时要注意处理好边界问题,注意对数组的赋值和改变。
(选择排序)
//选择排序public class N1_1 {private int a[];public N1_1(){}public N1_1(int[] a){this.a = a;}public int[] result(){for(int i = 0; i < a.length; i++){int min = a[i];int temp;int index = i;for(int j = i + 1; j < a.length; j++ ){if(min > a[j]){min = a[j];index = j;}}temp = a[i];a[i] = min;a[index] = temp;}return a;}public static void main(String[] args) {// TODO Auto-generated method stubint a[] = {5,3,6,2,7,8,3,3,3};N1_1 n = new N1_1(a);a = n.result();for(int i = 0; i < a.length; i++){System.out.println(a[i]);}}}
(冒泡排序)
public class N1_2 {private int a[];public N1_2(){}public N1_2(int[] a){this.a = a;}public int[] result(){int temp;for(int i = 0; i < a.length; i++){for(int j = 0; j < a.length - 1; j++){if(a[j] > a[j+1]){temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}return a;}public static void main(String[] args) {// TODO Auto-generated method stubint a[] = {1,2,4,3,3,5,5,3,4,5};N1_2 n = new N1_2(a);a = n.result();for(int i = 0; i < a.length; i++){System.out.println(a[i]);}}}(快速排序)
//快速排序public class N6_4 {public static int[] quicksort(int[] v,int left,int right){if(left<right){int key = v[left];int low = left;int high = right;while(low < high){while(low < high && v[high] >= key){high--;}v[low] = v[high];while(low < high && v[low] <= key){low++;}v[high] = v[low];}v[low] = key;quicksort(v,left,low-1);quicksort(v,low+1,right);}return v;}public static void main(String[] args) {// TODO Auto-generated method stubint[] a = {1,4,5,3,8,2,6,9,7};int[] v = quicksort(a,0,8);System.out.println(Arrays.toString(v));}}(归并排序)
public class GuiBing { public static void merge(int[] nums, int low, int mid, int high) { int[] temp = new int[high - low + 1]; int i = low;// 左指针 int j = mid + 1;// 右指针 int k = 0; // 把较小的数先移到新数组中 while (i <= mid && j <= high) { if (nums[i] < nums[j]) { temp[k++] = nums[i++]; } else { temp[k++] = nums[j++]; } } // 把左边剩余的数移入数组 while (i <= mid) { temp[k++] = nums[i++]; } // 把右边边剩余的数移入数组 while (j <= high) { temp[k++] = nums[j++]; } // 把新数组中的数覆盖nums数组 for (int k2 = 0; k2 < temp.length; k2++) { nums[k2 + low] = temp[k2]; } }public static int[] mergeSort(int[] str, int p, int r){int q = (p+r)/2;if(p < r){mergeSort(str,p,q);mergeSort(str,q+1,r);merge(str,p,q,r);}return str;}public static void main(String[] args) {// TODO Auto-generated method stubint[] a = {3,4,2,6,8,7,6,9};mergeSort(a,0,7);System.out.println(Arrays.toString(mergeSort(a,0,7)));}}
阅读全文
1 0
- Java算法之排序(快速,冒泡,归并,选择)
- 各种排序算法-Java-冒泡、选择、插入、快速、归并排序
- 排序算法总结(二)-------选择,堆,冒泡,快速,归并排序(java实现)
- 六大经典排序算法(Java版):冒泡、选择、插入、希尔、快速、归并
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- Javascript排序算法(冒泡排序,选择排序,插入排序,归并排序,快速排序)
- 排序算法Java描述:选择、冒泡、插入、希尔、归并、快速及三向切分快速排序
- Java 冒泡排序、选择排序、快速排序、归并排序
- Java排序算法以及算法改进总结(冒泡、选择、插入、归并、快速排序)
- java排序之冒泡、插入、选择、快速等排序算法
- c排序算法:选择、冒泡、插入、快速、归并、堆排序
- 排序算法(冒泡 插入 快速 归并)java
- 常用排序算法(包括:选择排序,堆排序,冒泡排序,选择排序,快速排序,归并排序)
- 【数据结构】常用比较排序算法(包括:选择排序,堆排序,冒泡排序,选择排序,快速排序,归并排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 6种排序算法:冒泡、鸡尾酒、选择、插入、归并、快速
- 排序算法-冒泡、插入、归并、希尔、快速、选择--代码总结
- 直接插入、冒泡、快速、简单选择、堆、归并排序算法
- 子页面获取父页面的值
- vs2013创建静态库并使用静态库
- java线程池学习
- linux中 likely与unlikely
- Python函数绘图
- Java算法之排序(快速,冒泡,归并,选择)
- Java实现文件上传
- 阿里云(企业云解析DNS)让你的博客飞起来
- freemaker实现导出Excel和word
- Android线程详解
- PHP基础知识03
- easyui 通过判断修改单独行的样式
- QT应用程序分辨率自适应
- ueditor更改工具栏按钮,设置css样式,第二次无法正常加载的解决方法