常用排序算法总结


总结一些常用的排序算法。

先定义一个数组用来进行接下来的排序

int num[] = { 4,9,7,15,67,89,97,123,468,12,34,76,8,9,4,1,80,100 };
//获取数组长度
int length;
length = sizeof(num) / sizeof(int);

以下皆为从小到大的排序

冒泡排序

for (int i = 0; i < length - 1; i++) {
		for (int j = 0; j < length - 1-i; j++) {
			if (num[j] > num[j + 1]) {
				int t = num[j];
				num[j] = num[j + 1];
				num[j + 1] = t;
		}
		
		}
	}

选择排序

for (int i = 0; i < length; i++) {
		int min = num[i];
		for (int j = i; j < length; j++) {
			if (min > num[j]) {
				int t = min;
				min = num[j];
				num[j] = t;
			}
			
		}
		num[i] = min;
	}

快速排序

//先定义一个交换函数
void exchange(int* p, int* q) {
	int temp = *p;
	*p = *q;
	*q = temp;
}
int quaipai(int left, int right) {
	//双指针相遇,排序结束
	if (left >= right) {
		return 0;
	}

	int i,j, t;//左右指针及基准
	i = left;
	j = right;
	t = num[left];

	//移动函数
	while (i != j) {
		while (i < j && num[j] >= t) {
			j--;
		}
		exchange(&num[i], &num[j]);        
		while (i < j && num[i] <= t) {
			i++;                                     
		}
		exchange(&num[i], &num[j]);
	}

	//递归此过程
	quaipai(i + 1, right);
	quaipai(left, i - 1);
}

文章作者: pcl
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 pcl !
评论
  目录