/*冒泡排序:
冒泡排序每一次冒泡循环要选出一个最小数,如有8个数,外层循环要循环7次(0-6),内层循环要循环要循环7-i次
*/
#include <stdio.h>
#include <string.h>
void sort(int input[] , int n )
{
int i=0,j=0,temp;
for(i = 0 ; i < n - 1 ; ++i) //冒泡排序(降序)
{
for(j = 0 ; j < n - i - 1 ; ++j)
{
if(input[j] < input[j+1])
{
temp = input[j];
input[j] = input[j+1];
input[j+1] = temp;
}
}
}//for
}
void selectSort(int input[], int n)//
{
int i=0,j=0,min,temp;
for (; i <n - 1; i++)
{
int min = i;/*每一趟循环比较时,min用于存放较小元素的数组下标,这样
当前批次比较完毕最终存放的就是此趟内最小的元素的下标,避免每次遇到较小元素都要进行交换。*/
for (j = i + 1; j <n; j++)
{
if (input[j] < input[min])
min = j;
}
//进行交换,如果min发生变化,则进行交换
if (min != i)
{
temp = input[min];
input[min] = input[i];
input[i] = temp;
}
}
}
static void insertionSort(int input[],int n)
{
int i=0,j=0,min,temp;
for (i = 1; i <n; i++)
{
j = i;
while (j > 0 && input[j] < input[j - 1])
{
temp = input[j];
input[j] = input[j-1];
input[j-1] = temp;
j--;
}
}
}
int main(void)
{
int i=0;
int input[8]={3, 6, 1, 9, 7,8,5,2};
insertionSort(input,8);
for(;i<8;i++)
printf("%d\t" ,input[i]);
return 0;
}
三种简单排序
最新推荐文章于 2018-12-18 20:08:34 发布