zoukankan      html  css  js  c++  java
  • c 排序 总结

    插入排序:

    #include <stdio.h>
    #include
    <sys/time.h>
    #include
    <unistd.h>
    #include
    <stdlib.h>


    void
    change_node (
    int data[], int head, int start, int end )
    {
    int j =0;
    for(j = end; j > start; j--)
    {
    data[j]
    = data[j-1];
    }
    data[start]
    = head;
    return ;
    }
    /* ----- end of function change_node ----- */

    void
    insert_data (
    int data[], int num)
    {
    int i =0;
    for(i = num -1; i >=0 ; i--)
    {
    if((data[num] > data[i]))
    {
    if(i == num -1)
    {
    break;
    }
    change_node(data, data[num], i
    +1, num);
    break;
    }
    else
    {
    if(i ==0)
    {
    change_node(data, data[num],
    0, num);
    }
    }
    }
    return ;
    }
    /* ----- end of function insert_data ----- */

    void
    sort (
    int data[], int nums)
    {
    int i =1;
    for(i =1; i < nums ; i++)
    {
    insert_data(data, i);
    }
    return ;
    }
    /* ----- end of function sort ----- */

    int
    main()
    {
    int lens =100000;
    int a[100000];
    int i =0;
    for(i =0; i < lens; i++ )
    {
    a[i]
    = rand();
    }
    struct timeval tv1, tv2;
    double sec =0;
    gettimeofday(
    &tv1, 0);

    sort(a,lens);

    gettimeofday(
    &tv2, 0);
    sec
    = (double)(tv2.tv_sec - tv1.tv_sec) + (double)(tv2.tv_usec - tv1.tv_usec) /1000000;
    printf(
    "time1: %f\n", sec);

    return0;
    }

    时间性能:

    time1: 23.330364

    快速排序:

     

    #include <stdio.h>
    #include
    <sys/time.h>
    #include
    <unistd.h>
    #include
    <stdlib.h>

    void swap(int*a,int*b)
    {
    int temp;
    temp
    =*a;
    *a=*b;
    *b=temp;
    }

    int qSort_pos(int a[],int low,int high)
    {
    int temp=a[low],i=low,j=high;
    while(i<j)
    {
    while((a[j]>=temp)&&(i<j)) j--;
    if(i<j) {swap(&a[i],&a[j]);i++;}
    while((a[i]<=temp)&&(i<j)) i++;
    if(i<j) {swap(&a[i],&a[j]);j--;}
    }
    return i;
    }


    void qSort(int a[],int low,int high)
    {
    int pos;
    if(low<high)
    {
    pos
    =qSort_pos(a,low,high);
    qSort(a,low,pos
    -1);
    qSort(a,pos
    +1,high);
    }
    }

    void quicksort(int l[],int n)
    {
    qSort(l,
    0,n -1); //第一个作为枢轴 ,从第一个排到第n个
    }

    int
    main()
    {
    int lens =100000;
    int a[100000];
    int i =0;
    for(i =0; i < lens; i++ )
    {
    a[i]
    = rand();
    }


    for(i =0; i <10; i++)
    {
    printf(
    "%d\n",a[i]);
    }
    struct timeval tv1, tv2;
    double sec =0;
    gettimeofday(
    &tv1, 0); 

    quicksort(a,lens);

    gettimeofday(&tv2, 0);
    sec 
    = (double)(tv2.tv_sec - tv1.tv_sec) + (double)(tv2.tv_usec - tv1.tv_usec) /1000000;
    printf(
    "time1: %f\n", sec);
    printf(
    "\n\n");

    for(i =0; i <10; i++)
    {
    printf(
    "%d\n",a[i]);
    }



    return0;
    }

    时间性能:

    time1: 0.051894

     

    指针

    #include <stdio.h>
    #include
    <sys/time.h>
    #include
    <unistd.h>
    #include
    <stdlib.h>

    void swap(int*a,int*b)
    {
    int temp;
    temp
    =*a;
    *a=*b;
    *b=temp;
    }

    int qSort_pos(int* a[],int low,int high)
    {
    int temp=*a[low],i=low,j=high;
    while(i<j)
    {
    while((*a[j]>=temp)&&(i<j)) j--;
    if(i<j) {swap(a[i],a[j]);i++;}
    while((*a[i]<=temp)&&(i<j)) i++;
    if(i<j) {swap(a[i],a[j]);j--;}
    }
    return i;
    }

    void qSort(int* a[],int low,int high)
    {
    int pos;
    if(low<high)
    {
    pos
    =qSort_pos(a,low,high);
    qSort(a,low,pos
    -1);
    qSort(a,pos
    +1,high);
    }
    }

    void quicksort(int* l[],int n)
    {
    qSort(l,
    0,n -1); //第一个作为枢轴 ,从第一个排到第n个
    }

    int
    main()
    {
    int lens =100;
    int* a[100];
    int i =0;
    for(i =0; i < lens; i++ )
    {
    a[i]
    = (int*)malloc(sizeof(int));
    *a[i] = rand();
    }

    quicksort(a,lens);


    return0;
    }
  • 相关阅读:
    禁止文本被选中
    计算机的发展史及多道技术
    计算机基础知识
    自我介绍
    工作内容1
    在IT行业中的抄袭事件
    哎呀呀
    查看Oracle版本号的方式
    JAVA项目的基本配置
    Ajax请求返回结果为404问题
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2098686.html
Copyright © 2011-2022 走看看