1 class bu { 2 public: 3 int num = 0; 4 bu(int val) { 5 this->num = val; 6 } 7 }; 8 9 template <class T> 10 void bubble(T* arr, int len) { 11 12 for (int j = 0; j < len; j++) 13 { 14 for (int i = 0; i < len - j - 1; i++) 15 { 16 if (arr[i + 1]->num < arr[i]->num) { 17 T temp = arr[i]; 18 arr[i] = arr[i + 1]; 19 arr[i + 1] = temp; 20 } 21 } 22 23 } 24 } 25 26 27 int main() 28 { 29 bu i1(1), i2(2), i3(3), i4(4), i5(5); 30 bu* bus[6] = { &i3, &i2, &i4, &i1 }; 31 32 for (int i = 0; i < 4; i++) 33 { 34 printf("[%d]\t", bus[i]->num); 35 } 36 printf("\n"); 37 38 bubble(bus,4); 39 40 for (int i = 0; i < 4; i++) 41 { 42 printf("[%d]\t", bus[i]->num); 43 } 44 printf("\n"); 45 46 return 0; 47 }
普通冒泡排序:
1 void bubble(int* arr,int len) { 2 for (int j = 0; j < len; j ++) 3 { 4 for (int i = 0; i < len - j -1; i ++) 5 { 6 if (arr[i + 1] < arr[i]) { 7 int temp = arr[i]; 8 arr[i] = arr[i + 1]; 9 arr[i + 1] = temp; 10 } 11 } 12 13 } 14 } 15 void main() { 16 int arr[10] = { 1,5,4,9,6,8,7 }; 17 int len = sizeof(arr) / 4; 18 bubble(arr, len); 19 for (int i = 0; i < len; i++) 20 { 21 printf("[%d]\t", arr[i]); 22 } 23 printf("\n"); 24 25 }