#关于C语言简单排序的简单汇总
1、冒泡排序
#include<stdio.h>
#define N 5//宏定义
int main (void)
{
int a[N] = {14,22,65,10,44};//要排序的数组
int i, j,temp;
for(i = 0;i < N;i++)
{
for(j = 0;j < N-i-1;j++)
{
if(a[j]< a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}printf("排序后的数组为\n");
for(i = 0;i < N;i++)
{
printf("%d\n",a[i]);
}
}
冒泡排序主要理解其邻位对比后交换的思想(在此处变量的交换也可以调用指针函数来解决)
2、选择排序
#include<stdio.h>
#define N 5
void swap(int*a,int*b);
void selection(int a[],int len);
int main(void)
{
int a[N] = {34,23,56,11,30};
int len = 5;
int i;
selection(a,len);
for(i = 0;i < len;i++)
{
printf("选择排序后的数组为%d\n",a[i]);
}
}
void swap(int*a,int*b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void selection(int a[],int len)
{
int i,j;
for(i = 0;i < len-1;i++)
{
int min = i;
for(j = i+1;j < len;j++)
if(a[j]<a[min])
min = j;
swap(&a[min],&a[i]);
}
}
此处选择排序中交换变量就运用到了指针的函数,选择排序次次选择出比前者小的数来交换从而达到排序数组的目的
3、快速排序
#include <stdio.h>
#include <stdlib.h>
#define N 10
void display (int arr[],int len)
{
int i;
for(i = 0;i < len;i++)
{
printf("%-3d",arr[i]);
}
return ;
}
void quicksort(int *arr,int low,int high)
{
int i = low;
int j = high;
int k = arr[low];
if(i < j)
{
while(i < j)
{
while(i < j && arr[j] >= k)
{
j--;
}
if(i < j)
{
arr[i++] = arr[j];
}
while(i < j && arr[i] < k)
{
i++;
}
if(i < j)
{
arr[j--] = arr[i];
}
}
arr[i] = k;
quicksort(arr,low,i-1);
quicksort(arr,i+1,high);
}
}
int main (void)
{
int arr[N] = {23,14,33,51,39,44,71,32,88,27};
int len = N;
quicksort(arr,0,len-1);
printf("排序后的数组为\n");
display(arr,len);
}
选定数组中第一个数后,分为两端分别进行与定义的第一个数的比较以交换变量从而到达排序的目的
版权声明:本文为weixin_52356220原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。