Java 简单算法--排序
1. 冒泡排序
package cn.magicdu.algorithm;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = { 5, 7, 8, 4, 3, 9, 7, 6 };
bubbleSort(arr);
}
/**
* 冒泡排序
* @param arr
*/
private static void bubbleSort(int[] arr) {
int temp=0;
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
bubblePrint(arr);
}
/**
* 打印数组
* @param arr
*/
private static void bubblePrint(int[] arr) {
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
2.插入排序
package cn.magicdu.algorithm;
public class InsertSort {
public static void main(String[] args) {
int []arr={3,4,2,3,57,8,34,15};
insertSort(arr);
}
/**
* 插入排序
* @param arr
*/
private static void insertSort(int[] arr) {
for(int i=0;i<arr.length;i++){
int temp=arr[i];
int j;
for(j=i;j>0;j--){
if(arr[j-1]>temp){
arr[j]=arr[j-1];
}else{
break;
}
}
arr[j]=temp;
}
insertPrint(arr);
}
/**
* 打印数组
* @param arr
*/
private static void insertPrint(int[] arr) {
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
3.快速排序
package cn.magicdu.algorithm;
public class QuickSort {
public static void main(String[] args) {
int[] arr = { 1, 4, 6, 2, 3, 4, 7, 8, 9, 5, 65 };
print(arr);
quickSort(arr, 0, arr.length - 1);
print(arr);
}
/**
* 快速排序
* @param arr
* @param low
* @param high
*/
private static void quickSort(int[] arr, int low, int high) {
if(low>=high){
return;
}
if((high-low)==1){
if(arr[0]>arr[1])
swap(arr,0,1);
return;
}
int pivot=arr[low];
int left=low+1;
int right=high;
while(left<right){
while(left<right&&left<=high){
if(arr[left]>pivot)
break;
left++;
}
while(left<=right&&right>low){
if(arr[right]<=pivot)
break;
right--;
}
if(left<right){
swap(arr, right, left);
}
}
swap(arr, low, right);
quickSort(arr, low, right);
quickSort(arr, right+1, high);
}
/**
* 交换数字
* @param arr
* @param i
* @param j
*/
private static void swap(int[] arr, int i, int j) {
int temp;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
/**
* 打印数组
* @param arr
*/
private static void print(int [] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
System.out.println();
}
}
Java 简单算法--排序的更多相关文章
- JAVA简单选择排序算法原理及实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...
- Java简单算法--出圈问题
package cn.magicdu.algorithm; import java.util.LinkedList; import java.util.List; /** * 出圈问题,数到某个数字的 ...
- Java 简单算法--打印回文数字
package cn.magicdu.algorithm; public class CircleNumber { public static void main(String[] args) { f ...
- Java 简单算法--打印乘法口诀(只使用一次循环)
package cn.magicdu.algorithm; /** * 九九乘法口诀表 * * @author xiaoduc * */ public class NineNineMulitTable ...
- Java简单算法--求100以内素数
package cn.magicdu.algorithm; /** * 打印素数 * * @author xiaoduc * */ public class Prim { public static ...
- 排序系列 之 简单选择排序及其改进算法 —— Java实现
简单选择排序算法: 基本思想: 在待排序数据中,选出最小的一个数与第一个位置的数交换:然后在剩下的数中选出最小的数与第二个数交换:依次类推,直至循环到只剩下两个数进行比较为止. 实例: 0.初始状态 ...
- Java排序算法(二):简单选择排序
[基本思想] 在要排序的一组数中.选出最小的一个数与第一个位置的数交换:然后在剩下的数中再找出最小的与第二个位置的数交换,如此循环至倒数第二个数和最后一个数比較为止. 算法关键:找到最小的那个数.并用 ...
- 常见排序算法总结:插入排序,希尔排序,冒泡排序,快速排序,简单选择排序以及java实现
今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内 ...
- java实现几种简单的排序算法
public class SimpleAri { public static void main(String[] args) { int[] t = {11, 21, 22, 1, 6, 10, 3 ...
随机推荐
- BNUOJ-29357 Bread Sorting 模拟
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=29357 直接模拟就可以了.. //STATUS:C++_AC_190MS_1884KB # ...
- mysql 查询多个id
select * from b1 where find_in_set('4',id); select * from b1 where id in (1,2,3,22);
- hdu 3617 Happy 2009
Happy 2009 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- nyoj 129 树的判定
并查集+欧拉 树的判定 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 A tree is a well-known data structure that is e ...
- 也谈SSO,一个简单实用的单点登录Demo
关于SSO(单点登录),百度百科解释如下 : “SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要 ...
- JAVA的设计模式之单例设计模式
1.确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例. 1)理论 Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 使用Singl ...
- SQLite DBHelp
c#连接SQLite SQLite这个精巧的小数据库,无需安装软件,只需要一个System.Data.SQLite.DLL文件即可操作SQLite数据库.SQLite是一个开源数据库,现在已变得越来越 ...
- 别名的应用(New-Alias)
New-Alias -name appcmd -value $env:windir\system32\inetsrv\appcmd.exe 这样就可以在当前PS环境下直接使用appcmd了
- 从零开始学android开发-查看sqlite数据库
C:\Users\Administrator>cd E:\ProSoft\adt-bundle-windows-x86-20140321\sdk\platform-tools
- windows 2003 远程登录时如何修改管理员密码
今天买的vps,需要修改密码.但是自己不会,看网上好多人都说是,按ctrl+alt+del .但是我试过之后发现不对,后来又找到说是使用ctrl+alt+end 更改密码就可以了. 千万不要通过那个 ...