C++中的排序算法---神奇的数据算法
C++中的排序算法---神奇的数据算法
1、冒泡排序
#include <stdio.h> #define SIZE 8 void bubble_sort(int a[], int n); void bubble_sort(int a[], int n) { int i, j, temp; for (j = 0; j < n - 1; j++)//外循环 for (i = 0; i < n - 1 - j; i++)//内循环 可以理解成 for(i=0;i<n-(j+1);i++) { //因为外循环拿出来一个数,同剩下内循环中其他数进行比较 if(a[i] > a[i + 1])//用内循环中的数据进行对比 { temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp; } } } int main() { int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12}; int i; bubble_sort(number, SIZE); for (i = 0; i < SIZE; i++) { printf("%d", number[i]); } printf("\n"); }
2、选择排序
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。

#include<stdio.h> int main(){ int a[10] = { 22, 5, 9, 10, 11, 43, 2, 31, 3, 6 }; puts("原始数据:"); for (int i = 0; i<10; i++) printf("%d ", a[i]); int i = 0,nMin=0; while (i < 9){//外循环,拿出一个,自己无需和自己比较 nMin = i;//假如第一位置为最小值;后期找到数组的最小值, //将最小值的位置再重新付给nMin int j = i + 1;//i=0时候,j从后面;j是跑龙套的 while (j < 10){ if (a[j] < a[nMin]){//跑龙套找到的数组值同最小值比还小 int t = a[nMin]; a[nMin] = a[j];//重新将找到的最小值赋给nMin a[j] = t; } ++j; } ++i; } puts("\n选择排序后的数据:"); for (int i = 0; i<10; i++) printf("%d ", a[i]); return 0; }

浙公网安备 33010602011771号