您的位置:首页 > 编程语言 > C语言/C++

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

2011-02-11 12:16 676 查看
/*
* 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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: