快速排序+划分数组(java实现)
来源:互联网 发布:360免费wifi软件 编辑:程序博客网 时间:2024/05/27 20:33
题目:给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:
所有小于k的元素移到左边所有大于等于k的元素移到右边
返回数组划分的位置,即返回满足 nums[i] 大于等于 k的数组中第一个位置 i。
很容易想到使用快速排序,快速排序的思路就不详细说明了。下面是自己写的快速排序的代码
public static void quicksort(int[] a,int left,int right){ if(left<right) { int i = left; int j = right; int t = a[left]; //基数 while(i!=j){ while(a[j]>=t&&i<j) { j--; } while(a[i]<=t&&i<j) { i++; } if (i<j) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } } //最终将基准数归位 ,将基数放在i=j的位置 a[left]=a[i]; a[i]=t; //将划分出来的数字继续递归排序 quicksort(a, left, i-1); quicksort(a, i+1, right); } }
下面相大伙知道如何实现划分数组了吧。代码如下:
public static int quickdivide(int[] a,int k){ int i=0; int n=2; int j=a.length-1; if (a.length==0) return 0; while(i!=j){ while(a[j]>=k&&i<j) { j--; } while(a[i]<k&&i<j) { i++; } if (i<j) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } } return i+n; } public static void main(String[] args) { int[] a={6,1,2,7,9,11,4,5,10,8}; //quicksort(a, 0, a.length-1); int s=quickdivide(a,6); System.out.println(s); /*for (int i = 0; i < a.length; i++) { System.out.print(a[i]); }*/ }
总结
算法一定要把题目读懂,一遍不懂读两遍,三遍,四遍,慢慢的培养自己解决问题思路,学会提升。想对自己说,加油。
阅读全文
0 0
- 快速排序+划分数组(java实现)
- Java实现数组的快速排序(快速排序算法)
- 快速排序之划分(java)
- 算法--Java代码实现快速排序以及三路划分
- Java实现-数组划分
- 快速排序 Java实现-数组-链表
- 数组实现快速排序
- java双向划分的快速排序
- JAVA数组快速排序
- 快速排序实现(JAVA)
- 快速排序(java实现)
- 快速排序(java实现)
- 快速排序(java实现)
- 快速排序实现(Java)
- 快速排序(java实现)
- 快速排序(java实现)
- 快速排序(Java实现)
- 用数组实现快速排序(C++)
- 深度学习在自然语言处理的应用 2017-07-07 Jonathan Mugan 关于算法的那些事 在深度学习出现之前,我们书写的文字所包含的意思是通过人为设计的符号和结构传达给计算机的。我在上一篇
- HttpURLConnection
- Linux统计代码行数
- [vscode] markdown_index----可以为你的markdown标题添加序号的插件
- iOS Xcode pch文件的路径配置
- 快速排序+划分数组(java实现)
- 基于MT7628或MT7621的wifi存储方案
- 计算机视觉--caltech-lane-detection
- Java并发之UncaughtExceptionHandler
- Android NDK: From Elementary To Expert Episode 14
- 夯实JAVA之泛型详解一代龙套篇
- apache2跨域js请求解决方案
- AeroSpike安装及启动
- 关于注解你需要知道的