三种简单排序算法

各种排序算法的空间复杂度:

img

简单选择排序

动图演示:

img

C语言代码:

#include<stdio.h>
void Swap(int *a ,int * b){		//使用指针地址引用,永久的改变值的位置 
	int t = *a; *a = *b ;*b = t; 
}

//N:数组的长度 
void SimpleSelectSort(int A[],int N){
	int i,j,min;
	for(i = 0;i<N-1;i++){
		min = i;
		for(j = i+1;j<N;j++){		//寻第i组找最小元素 
			if(A[j]<A[min])
			min = j;				//min记录最小元素位置 
		}
		Swap(&A[i],&A[min]);		//将第i个元素与最小元素交换 
	}
	
}
int main(void){
	// 简单选择排序:
	 int B[7] = {2,3,4,5,6,1,9}; 
	SimpleSelectSort(B,7);
	for(int i = 0;i<7;i++){
		printf("%d\n",B[i]);
	}
	return 0;
}

简单插入排序

动图演示:

img

C语言代码:

void InsertSort(int A[],int N){
	//简单插入排序
	int p,i;
	int Tmp;
	for(p = 1;p<N;p++){
		Tmp = A[p];		//取出未排序序列中的第一个元素 
		for(i = p;i>0&& A[i-1]>Tmp;i--)
			A[i] = A[i-1];	//因为是向后移动,所以直接一步覆盖就可以了
		 A[i] = Tmp;			//放进合适的位置 
	} 
} 

int main(void){
	
	 int B[7] = {2,3,4,5,6,1,9}; 
	InsertSort(B,7);
	for(int i = 0;i<7;i++){
		printf("%d\n",B[i]);
	}
	return 0;
}

冒泡排序(简单交换排序)

动图演示:

img

C语言代码:

void Swap(int *a ,int * b){		//使用指针地址引用,永久的改变值的位置 
	int t = *a; *a = *b ;*b = t; 
}
void BubbleSort(int A[],int N){
	int P,i;
	bool flag;
	for(P = N-1;P>0;P--){
		flag = false;	//标记盖茨循环中是否发生交换。若无,则说明整个序列有序
		for(i = 0;i<P;i++) {	//一趟冒泡
			if(A[i]>A[i+1]){
				Swap(&A[i],&A[i+1]);
				flag = true;		//表示发生了交换 
			} 
			
		}
		if(flag == false)break;		//若全程无交换,则跳出循环 
	}
}
int main(void){
	
	 int B[7] = {2,3,4,5,6,1,9}; 
	BubbleSort(B,7);
	for(int i = 0;i<7;i++){
		printf("%d\n",B[i]);
	}
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值