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);
}
}
* 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);
}
}
相关文章推荐
- 几种常见排序算法的c语言实现
- 几种常见排序算法的c语言实现
- 几种常见排序算法的C语言实现
- 几种常见排序算法的c语言实现
- 几种常见内部排序算法分析与实现(C语言描述)
- 几种常见的排序算法实现
- Java实现几种常见排序算法代码
- 用Java实现几种常见的排序算法
- Java实现几种常见排序算法代码
- 几种排序算法的C语言实现
- 用Java实现几种常见的排序算法
- 常见的几种内排序算法以及实现(C语言)
- 几种常见的排序算法及实现(三)
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- 几种常用排序算法的C语言实现
- 几种常见排序算法的比较与实现
- Java实现几种常见排序算法代码
- 用php实现几种常见的排序算法
- 常见排序算法(冒泡,选择,快速)的C语言实现
- C语言——常见的几种排序的实现