zoukankan      html  css  js  c++  java
  • 简单排序算法以及其复杂度

     选择排序,时间复杂度 O(n^2),
    下面要注意
    c语言传参入数组传入的是地址!,所以用sizeof求数组大小的时候,在自定义函数中求出来的sizeof(arr)就是指针的大小,为4;64位系统的话是8;
    所以要在main函数中传入自定义方法给数组大小
     1 #include <stdio.h>
     2 #define arrSize(arr) sizeof(arr)/sizeof(arr[0])
     3 void SelectSort(int arr[],int arrsize){
     4     for(int i=0;i<arrsize;i++){
     5         int k = i;                     //对比数组最小的下标,进行交换 
     6         for(int j=i;j<arrsize;j++){
     7             if (arr[k]>arr[j]){
     8                 k = j;    
     9             }
    10         }
    11         if(k!=i){
    12         int temp = arr[i];
    13         arr[i]=arr[k];
    14         arr[k]=temp;    
    15         }
    16     }
    17 }
    18 int main(){
    19     int arr[] = {12,312,41,35,344,12,5};
    20     int arrsize = arrSize(arr); //c语言传参入数组传入的是地址! 
    21     SelectSort(arr,arrsize); 
    22     for(int i=0;i<arrsize;i++){
    23         printf("%d ",arr[i]);
    24     }
    25 } 
     //插入排序,最大复杂度O(n^2)
    1
    #include <stdio.h> 2 #define arrSize(arr) sizeof(arr)/sizeof(arr[0]) 3 void InsertSort(int arr[],int arrsize){ 4 for(int i=1;i<arrsize;i++){ 5 int temp = arr[i]; 6 int j=i-1; 7 while(j>=0&&arr[j]>temp){ 8 arr[j+1]=arr[j]; 9 j--; 10 } 11 arr[j+1] = temp; 12 for(int i=0;i<arrsize;i++){ 13 printf("%d ",arr[i]); 14 } 15 printf(" "); 16 } 17 } 18 int main(){ 19 int arr[] = {12,312,41,35,344,12,5}; 20 int arrsize = arrSize(arr); //c语言传参入数组传入的是地址! 21 InsertSort(arr,arrsize); 22 for(int i=0;i<arrsize;i++){ 23 printf("%d ",arr[i]); 24 } 25 }
  • 相关阅读:
    Custom.pll : ZOOM小测试
    在编写PL/SQL代码中使用SELECT语句时如何避免例外发生
    使用Custom.pll修改标准Form的LOV(转)
    WINCE 定时器0控制LED驱动源码
    WinCE文件目录定制
    printf输出格式
    WINCE 微秒、毫秒级延时函数
    WINCE远程注册表的使用
    CE开发中可能遇到的问题
    S3C2440 进行微秒级、毫秒级延时函数
  • 原文地址:https://www.cnblogs.com/Jason-LinkStart/p/12888552.html
Copyright © 2011-2022 走看看