几种常见的排序及其时间复杂度

来源:互联网 发布:获取淘宝买家手机号 编辑:程序博客网 时间:2024/05/17 08:30

1.插入排序法  时间复杂度:O(n²)

java版

class sort1 {public static void main(String[] args) {//System.out.println("Hello World!");int[] arr={10,5,2,4,7};sort_1(arr);}public static void sort_1(int[] arr){int i,j,key;for (j=1;j<arr.length ;j++ ){key=arr[j];i=j-1; while (i>=0&&arr[i]>key){arr[i+1]=arr[i];i--;}arr[i+1]=key;}for (int x=0;x<arr.length ;x++ ){System.out.println(arr[x]);}}}

C语言版

#include <stdio.h>void insert_sort(int arr[]){int i,j,key;for (j=1;j<5 ;j++ ){key=arr[j];i=j-1; while (i>=0&&arr[i]>key){arr[i+1]=arr[i];i--;}arr[i+1]=key;}for (int x=0;x<5 ;x++ ){printf("%d",arr[x]);}}void main(){int arr[]={10,5,2,4,7};insert_sort(int arr[]);}

2.冒泡排序  时间复杂度:O(n²)

java版

class  sort2{public static void main(String[] args) {int[] arr={5,2,4,7,1,3,2,6};sort_2(arr);}public static void sort_2(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;}}}for (int x=0;x<arr.length ;x++ ){System.out.println(arr[x]);}}}

C语言版


#include <stdio.h>void sort(int arr[],int len){int i,j,temp;for(i=0;i<len;i++){for(j=0;j<len-i-1;j++){if(arr[j]<arr[j+1]){temp=arr[j+1];arr[j+1]=arr[j];arr[j]=temp;}}}}void main(){int t;int a[6]={9,1,2,6,5,4};      sort(a,6);           for (t=0;t<6;t++)        {            printf("%d ",a[t]);        }}
3.选择排序  时间复杂度:O(n²)


4.归并排序  时间复杂度:O(nlogn)


5.快速排序 时间复杂度:O(nlogn)


6.堆排序    时间复杂度:O(nlogn)




0 0
原创粉丝点击