冒泡排序、快速排序、插入排序、选择排序算法

作者在 2013-09-02 09:05:46 发布以下内容
#include<stdio.h>
#include<stdlib.h>

#define LEN sizeof(arr)/sizeof(arr[0])

void swap(int *p , int *q)
{
    int temp = *p;
        *p = *q;
        *q = temp;
}

void arr_print(int *arr, int len)
{
    int i;
    for (i=0; i<len; i++)
        printf("%d ",arr[i]);
    printf("\n");
}

void bubble_sort(int *arr)
{
    int i,j;
    for(j=0; j<9; j++)
          for (i=0; i<9-j; i++)
                {       
                          if (arr[i]>arr[i+1])
                               {       
                                 swap(&arr[i],&arr[i+1]);
                             }
            }


}

void quick_sort(int *arr, int len)
{
    if (len == 0 || len == 1)
        return ;
    int pivot_idx = len/2;
    int pivot = arr[pivot_idx];
    
    int l = 0;
    int r = len-1;
    
    for (; arr[l]<pivot && l<r; l++)
        ;
    for (; arr[r]>= pivot && l<r; r--)
        ;
    arr[pivot_idx] = arr[l];
    
    while (l < r)
    {
        arr[l] = arr[r];
        for (; arr[l]<pivot && l<r; l++)
            ;
        arr[r] = arr[l];
        for (; arr[r]>=pivot && l<r; r--)
            ;
    }
    arr[l] = pivot;
    
    quick_sort(arr,l);
    quick_sort(arr+l, len-l-1);
}

void insert_sort(int * arr)
{       
//    i 是有序中的最后一个
//     j 是无序中的第一个
    int i, j, temp;
    for (j=1; j<10; j++)
    {    
        temp = arr[j];
        for (i=j-1; i>=0 && temp<arr[i]; i--)
        {
            arr[i+1] = arr[i];
        }
        arr[i+1] = temp;
    }
}

void select_sort(int arr[])
{
    int min_idx, i, j;
    for (i = 0; i<LEN; i++)
    {
        min_idx = i;
        
        for (j=i; j<LEN;j++)
        {
            if(arr[j]<arr[min_idx])
            {
                min_idx = j;
            }
        }
        swap(&arr[i], &arr[min_idx]);
    }    
}

int main()
{
    int i,j;
    int arr[] = { 3, 9, 2, 7, 10, 8, 4, 6, 5, 1};
    
    bubble_sort(arr);
//    quick_sort(arr, LEN);
//      insert_sort(arr);    
    select_sort(arr);    


    arr_print(arr, LEN);
    return 0;
}
默认分类 | 阅读 1691 次
文章评论,共2条
lele1229love
2013-09-29 22:12
1
lele1229love
2013-09-29 22:12
2
good!
游客请输入验证码
文章分类