冒泡排序-插入排序-快速排序-选择排序---飞天博客
2014-09-29 17:37
369 查看
请看文章:
排序经典集合:插入排序,冒泡排序,快速排序,选择排序,代码简单请看下面的基本介绍和代码
插入排序:直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到一排好序的有序表中 时间复杂度为:O(n^2)
冒泡排序:冒泡排序是将前一个与临近的一个元素比较,如果前者大于后者则交换顺序,在一轮排序之后,最后一个是最大的,第二次倒数第二个最大,一次直到所有的序列都为有顺序的数列 时间复杂度为:o(n^2)
快速排序:快速排序运用到了分割的思想,通过一趟排序将带排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后递归对这两部分继续分割排序,已达到整个序列有序 时间复杂度为:knln(n) 结合冒泡排序,可以降低至O(log(n));
选择排序:这个排序比较简单,也很容易理解,通过n-i+1(i=1,2,..n-1)个记录中选取关键字最小的记录作为关键字,并和第i(1<=i<=n)个记录交换 时间复杂度为O(n^2)
以上代码复制即可运行,写的很简单,没有什么设计方法,有什么不懂得可以留言一起探讨
转载之后请注明出处:/article/10267385.html
飞天博客
谢谢
排序经典集合:插入排序,冒泡排序,快速排序,选择排序,代码简单请看下面的基本介绍和代码
插入排序:直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到一排好序的有序表中 时间复杂度为: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
飞天博客
谢谢
相关文章推荐
- 内排序(插入排序、冒泡排序、选择排序、shell排序、快速排序、归并排序、堆排序)
- 冒泡排序,快速排序,归并排序,选择排序,插入排序,堆排序
- 冒泡排序,插入排序,选择排序和快速排序-C语言
- 【算法】希尔排序,快速排序,选择排序,插入排序,冒泡排序
- [java]排序分类--及选择排序、插入排序、冒泡排序、快速排序的解释图和代码
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- 冒泡排序、快速排序、选择排序、插入排序、shell排序C代码
- 经典排序算法设计与分析(插入排序、冒泡排序、选择排序、shell排序、快速排序、堆排序、分配排序、基数排序、桶排序、归并排序)
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
- C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
- 各种排序算法实现——基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- Java实现排序(快速排序、冒泡排序、选择排序、基数排序、插入排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- (一)Java实现排序,选择排序,快速排序,冒泡排序,插入排序
- 排序算法(插入排序、shell排序、冒泡排序、选择排序、合并排序、堆排序、快速排序、计数排序、基数排序、桶排序)
- c语言中的几种排序算法——冒泡排序、快速排序、插入排序、选择排序
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 各种排序算法总结----基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 插入排序、选择排序、冒泡排序、快速排序、堆排序
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)