排序代码题汇总

排序代码题汇总

1.选择排序

思想:不断找剩余序列的最小值,放到剩余序列的第一个位置

void selectSort(int A[], int n){
	int i,j,k,temp;
	for(i=0; i<n; i++){
		k = i;
		for(j=i+1; j<n; j++){
			if(A[j]<A[k]){//
				k = j;
			}
		}
		temp = A[i];
		A[i] = A[k];
		A[k] = temp;
	}
}

2.计数排序(桶排序)

注意:桶数组的下标是原数组中的值,桶数组的值是原数组中的元素个数

void countSort(int A[], int n){
	int max = A[0];
	for(int i=0; i<n; i++){//找原数组最大值,以确定桶的范围
		if(A[i] > max){
			max = A[i];
		}
	}
	int *B = new int[max + 1];
	for(int j=0; j<n; j++){//往桶中存数
		B[A[j]]++;
	}
	int index = 0;
	for(int k=0; k<max+1; k++){//从桶中取数
		while(B[k]-- > 0){
			A[index++] = k; 
		}
	}
}

3.奇偶交换排序

void oddEvenSort(int A[], int n){
	int oddSort = 0;
	int evenSort = 0;
	while(!oddSort && !evenSort){
		oddSort = 1;
		evenSort = 1;
		for(int i=0; i<n-1; i=i+2){//
			if(A[i] > A[i+1]){
				swap(A[i], A[i+1]);
				oddSort = 0;
			}
		}
		for(int j=1; j<n-1; j=j+2){//
			if(A[j] > A[j+1]){
				swap(A[j], A[j+1]);
				evenSort = 0;
			}
		}
	}
}

你可能感兴趣的:(数据结构代码题,数据结构)