C语言实现几种常见排序算法

    技术2025-03-05  38

    /* * worker.c * *  Created on: 2010-7-1 *      Author: panfei */#include <stdio.h>void swap (int *x, int *y){    int temp;    temp = *x; *x = *y; *y = temp;}// 插入排序 升序void insertsort(int arr[], int size){    int i, j;    int to_insert;    for (i=1; i < size; i++)    {        to_insert = arr[i];        for (j=i-1; j>=0 && arr[j] > to_insert; j--)        {            arr[j+1] = arr[j];        }        arr[j+1] = to_insert;    }}// 选择排序 降序void selectsort(int arr[], int size){    int i, j;    for (i=0; i<size; i++)    {        for (j = i+1; j<size; j++)        {            if (arr[i] < arr[j])            {                swap(&arr[i], &arr[j]);            }        }    }}// 冒泡排序 升序void bubblesort(int arr[], int size){    int i, j;    for (i=0; i<size; i++)    {        for (j=0; j<size-1-i; j++)        {            if (arr[j] > arr[j+1])            {                swap (&arr[j], &arr[j+1]);            }        }    }}// 快速排序void quicksort(int arr[], int left, int right){        if(right > left)        {                int storeIndex = left;                int i;                swap(&arr[(left+right)/2], &arr[right]);                for(i=left; i<right; i++)                {                        if(arr[i] > arr[right])                        {                                swap(&arr[i], &arr[storeIndex]);                                ++storeIndex;                        }                }                swap(&arr[storeIndex], &arr[right]);                quicksort(arr, left, storeIndex-1);                quicksort(arr, storeIndex+1, right);        }}

    最新回复(0)