您的位置:首页 > 其它

冒泡排序-插入排序-快速排序-选择排序---飞天博客

2014-09-29 17:37 369 查看
请看文章:

排序经典集合:插入排序,冒泡排序,快速排序,选择排序,代码简单请看下面的基本介绍和代码

插入排序:直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到一排好序的有序表中 时间复杂度为:O(n^2)

package paixu;
/**
* 冒泡排序
* @author 肖华    xh1991101@163.com
*
*/
public class Charu {
public static void main(String[] args) {
int[] arr=new int[]{1,9,5,4,8,7,0,2,3,6};
for(int i=1;i<arr.length;i++){
int temp=arr[i];
//			int j=i-1;//在arr[0]-arr[j-1]内为有序的元素
//			while(j>=0){
//				if(arr[j]>temp){
//					arr[j+1]=arr[j];//往后移动
//					j--;
//				}else{
//					break;//找到这个元素了
//				}
//			}
//				arr[j+1]=temp;
int j=0;
for(j=i-1;j>=0;j--){
if(arr[j]>temp){
arr[j+1]=arr[j];//往后移动
}else{
break;//找到这个元素了
}
}//这个元素有可能是第一位
arr[j+1]=temp;//插入
}
print(arr);

}

public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}

}
}


冒泡排序:冒泡排序是将前一个与临近的一个元素比较,如果前者大于后者则交换顺序,在一轮排序之后,最后一个是最大的,第二次倒数第二个最大,一次直到所有的序列都为有顺序的数列 时间复杂度为:o(n^2)

package paixu;

/**
* 冒泡排序
* @author 肖华    xh1991101@163.com
*
*/
public class Maopao {

public static void main(String[] args) {
int[] arr=new int[]{1,9,5,4,8,7,0,2,3,6};
for(int j=0;j<arr.length-1;j++){
for(int i=0;i<arr.length-1;i++){
if(arr[i]>arr[i+1]){
int temp=arr[i+1];
arr[i+1]=arr[i];
arr[i]=temp;
}
}
}

print(arr);
}

public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}

}

}


快速排序:快速排序运用到了分割的思想,通过一趟排序将带排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后递归对这两部分继续分割排序,已达到整个序列有序 时间复杂度为:knln(n) 结合冒泡排序,可以降低至O(log(n));

package paixu;

/**
* 冒泡排序
* @author 肖华    xh1991101@163.com
*
*/
public class Quick {

public static void main(String[] args) {
int[] arr=new int[]{1,9,5,4,8,7,0,2,3,6};
qSort(arr, 0, 9);
print(arr);

}

public static void qSort(int[] arr,int low,int high){
if(low<high){
int middle=partition(arr, low, high);//分组
qSort(arr,low,middle);//递归排序
qSort(arr, middle+1, high);
}
}

public static int partition(int[] arr,int low,int high){
int key=arr[low];
while(low <high){
while(low<high&&arr[high]>=key){
high--;
}
//交换顺序
int temp=arr[low];//此时arr[low]==key
arr[low]=arr[high];
arr[high]=temp;//此时arr[high]==key

while(low<high&&arr[low]<=key){
low++;
}
temp=arr[high];//此时arr[high]==key
arr[high]=arr[low];
arr[low]=temp;//此时arr[low]==key
}
return low;
}

public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}

}

}


选择排序:这个排序比较简单,也很容易理解,通过n-i+1(i=1,2,..n-1)个记录中选取关键字最小的记录作为关键字,并和第i(1<=i<=n)个记录交换 时间复杂度为O(n^2)

package paixu;

/**
* 冒泡排序
* @author 肖华    xh1991101@163.com
*
*/
public class Xuanze {

public static void main(String[] args) {
int[] arr=new int[]{1,9,5,4,8,7,0,2,3,6};
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>=arr[j]){//选择最小的,保留在i位置
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
print(arr);

}

public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}

}
}


以上代码复制即可运行,写的很简单,没有什么设计方法,有什么不懂得可以留言一起探讨

转载之后请注明出处:/article/10267385.html
飞天博客

谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐