三种简单排序

/*冒泡排序:
	冒泡排序每一次冒泡循环要选出一个最小数,如有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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值