氣泡排序與選擇排序

zruillong發表於2020-11-18
#include<stdio.h>
#define N 10
int main()
{
	int i, j, temp, a[N] = {13, 42, 5, 21, 254, 56, 85, 12, 76, 100};
	printf("排序之前:\n");
	for(i = 0; i < N; i++)
	printf("%d ", a[i]);
	printf("\n");
	for(i = 1; i <= N - i; i++)
		for(j = 0; j < N - i; 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 ", a[i]);
	return 0;
}

這就是氣泡排序
等等,我再去放在函式裡面看看

#include<stdio.h>
#define N 10
void inorder(int *p)
{
	int i, j, temp;
	for(i = 1; i <= N - i; i++)
		for(j = 0; j < N - i; j++)
			if(*(p + j) > *(p + j + 1))
			{	
				temp = *(p + j);
				*(p + j ) = *(p + j + 1);
				*(p + j + 1) = temp;
			}
	
}

int main()
{
	int i, a[N] = {13, 42, 5, 21, 254, 56, 85, 12, 76, 100};
	printf("排序之前:\n");
	for(i = 0; i < N; i++)
	printf("%d ", a[i]);
	printf("\n");
	inorder(a);
	printf("排序之後: \n");
	for(i = 0; i < N; i++)
		printf("%d ", a[i]);
	return 0;
}
用了指標  
也不知道對不對  哈哈哈哈

我再看看選擇排序

#include<stdio.h>
#define N 10
int main()
{
	int i, j, min, temp, a[N] = {13, 42, 5, 21, 254, 56, 85, 12, 76, 100};
	printf("排序之前:\n");
	for(i = 0; i < N; i++)
	printf("%d ", a[i]);
	printf("\n");
	for (i = 0; i < N - 1; i++)
	{
		min = i;	
		for(j = i ; j < N; j++)
		{
			if(a[min] > a[j])
				min = j;
		}
		if(min != i)
		{
			temp = a[min];
			a[min] = a[i];
			a[i] = temp;
		}
	}

	//inorder(a);
	printf("排序之後: \n");
	for(i = 0; i < N; i++)
		printf("%d ", a[i]);
	return 0;
}

用函式看看
嗯嗯
寫不出來了

相關文章