筆試題目:0交換排序(0~99)
阿新 • • 發佈:2019-02-01
一道面試題編了一晚上,感覺自己的程式設計能力實在是差勁。下面自己的一點見解,還望不吝賜教。
題目概述:1、生成0~99的隨機陣列。
2、應用0交換函式對隨機陣列進行降序排序。0交換函式:輸入陣列array中的任意一個值n,陣列中的0與n交換位置。
#include "stdafx.h" #include "stdio.h" #include "time.h" #include "stdlib.h" void swap_with_zero(int* array, int len, int n) //0交換函式 { int a = -1; int b = -1; for (int i = 0; i < len; ++i) { if (array[i] == 0) { a = i; } if (array[i] == n) { b = i; } } int c = array[a]; array[a] = array[b]; array[b] = c; } class Solution { public: void sort(int* array, int len) //呼叫swap_with_zero進行降序排序 { int temp; swap_with_zero(array,len,array[0]); for (int i = 1; i < len; i++) { temp = array[i - 1]; for (int j = i; j < len; j++) { if (array[j]>temp) { temp = array[j]; } } swap_with_zero(array, len, temp); swap_with_zero(array, len, array[i]); } } }; int Rand(int x,int y) { return rand() % (y - x + 1) + x;//生成隨機數 } void main() { int len = 100; int array[100]; srand((unsigned)time(NULL)); for (int i = 0; i < 100; i++){ array[i] = i; } for (int i = 0; i < 100; i++) { int a = Rand(0, 99); int temp = array[i]; array[i] = array[a]; array[a] = temp; } Solution solution; //solution 類 solution.sort(array, len); for (int i = 0; i < 100;i++) { printf("%3d",array[i]); if (array[i] % 10 == 0) { printf("\n"); } } system("pause"); }
執行結果: