搜索引擎排序DEMO
生活随笔
收集整理的這篇文章主要介紹了
搜索引擎排序DEMO
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
搜索引擎排序DEMO
#include<stdio.h>int lookarr(int* arr, int arrSize) {for (int i = 0; i < arrSize; i++) {printf("%d, ", arr[i]);}printf("\n"); }int lookarr2(int** arr, int arrSize) {printf("======\n");for (int i = 0; i < 6; i++) {for (int j = 0; j < 3; j++) {printf("%d ,", arr[i][j]);}printf("\n");}printf("======\n"); } int SelectSort(int* arr, int arrSize, int order) {int i, j;int temp;for (i = 0; i < arrSize; i++) {for (j = i + 1; j < arrSize; j++) {if ((arr[i] - arr[j]) * order > 0) {temp = arr[i];arr[i] = arr[j];arr[j] = temp;lookarr(arr, arrSize);}}} }int SelectSort2(int** arr, int arrSize, int order1, int order2) {int i, j;int count = 0;int *temp = (int *)malloc(sizeof(int) * 2);for (i = 0; i < arrSize; i++) {for (j = i + 1; j < arrSize; j++) {if ((arr[i][0] - arr[j][0]) * order1 > 0) {memcpy(temp, arr[i], sizeof(int) * 2);memcpy(arr[i], arr[j], sizeof(int) * 2);memcpy(arr[j], temp, sizeof(int) * 2);printf("count = %d\n", ++count);lookarr2(arr, arrSize);}else if ((arr[i][0] - arr[j][0]) * order1 == 0) {if ((arr[i][1] - arr[j][1]) * order2 > 0) {memcpy(temp, arr[i], sizeof(int) * 2);memcpy(arr[i], arr[j], sizeof(int) * 2);memcpy(arr[j], temp, sizeof(int) * 2);printf("count = %d\n", ++count);lookarr2(arr, arrSize);}}}} }int sort_cmp(int *a, int *b, int **orderby, int depth) {int sort_index = orderby[depth][0];if (orderby[depth][1] != 0)return (a[sort_index] - b[sort_index]) * orderby[depth][1];elsereturn 0; }int sort_arr_index(int* a, int* b, int* temp, int size) {memcpy(temp, a, sizeof(int) * size);memcpy(a, b, sizeof(int) * size);memcpy(b, temp, sizeof(int) * size); }void sort_func(int **arr, int i, int j, int **orderby, int *temp, int *count, int arrSize, int depth, int orderbySize) {if (sort_cmp(arr[i], arr[j], orderby, depth) > 0) {sort_arr_index(arr[i], arr[j], temp, 3);printf("count = %d\n", ++(*count));lookarr2(arr, arrSize);}else if (sort_cmp(arr[i], arr[j], orderby, depth) == 0) {if (orderbySize <= depth)return;sort_func(arr, i, j, orderby, temp, count, arrSize, depth + 1, orderbySize);}return; } int SelectSort2order(int** arr, int arrSize, int **orderby, int orderbySize) {int i, j;int count = 0;int* temp = (int*)malloc(sizeof(int) * 2);//入口要動態(tài)申請的,這里先寫2.int si[2] = { orderby[0][0], orderby[1][0] };printf("sort_index = %d, %d\n", si[0], si[1]);int order[5] = { 0 };order[0] = orderby[0][1];order[1] = orderby[1][1];for (i = 0; i < arrSize; i++) {for (j = i + 1; j < arrSize; j++) {if (sort_cmp(arr[i], arr[j], orderby, 0) > 0) {sort_arr_index(arr[i], arr[j], temp, 2);printf("count = %d\n", ++count);lookarr2(arr, arrSize);}else if (sort_cmp(arr[i], arr[j], orderby, 0) == 0) {if (sort_cmp(arr[i], arr[j], orderby, 1) > 0) {sort_arr_index(arr[i], arr[j], temp, 2);printf("count = %d\n", ++count);lookarr2(arr, arrSize);}else if (sort_cmp(arr[i], arr[j], orderby, 1) == 0) {// continue;// break;}}}}return 0; }void SelectSort2digui(int** arr, int arrSize, int** orderby, int orderbySize) {int i, j;int count = 0;int* temp = (int*)malloc(sizeof(int) * 3);int depth = 0;for (i = 0; i < arrSize; i++) {for (j = i + 1; j < arrSize; j++) {sort_func(arr, i, j, orderby, temp,&count, arrSize, depth, orderbySize);}} } int testSelectSort() {int arr[][3] = { {9, 4, 4}, {9, 1, 5}, {8, 7, 7}, {8, 1, 9}, {8, 5, 5}, {8, 5, 4} };int** pparr = (int**)malloc(sizeof(int*) * 6);for (int i = 0; i < 6; i++) {pparr[i] = (int*)malloc(sizeof(int) * 3);memcpy(pparr[i], arr[i], sizeof(arr[i]));}int orderByArr[3][2] = { {2, 1}, {1, 1}, {0, 1} };int **orderby = (int**)malloc(sizeof(int*) * 3);for (int i = 0; i < 3; i++) {orderby[i] = (int*)malloc(sizeof(int) * 2);memcpy(orderby[i], orderByArr[i], sizeof(orderByArr[i]));}for (int i = 0; i < 3; i++) {for (int j = 0; j < 2; j++) {printf("%d ,", orderby[i][j]);}printf("%\n");}// SelectSort2(pparr, 6, -1, 1);// SelectSort2order(pparr, 6, orderby, 2);SelectSort2digui(pparr, 6, orderby, 3); }總結(jié)
以上是生活随笔為你收集整理的搜索引擎排序DEMO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上河南星海科技_揭秘丨赣江新区网红打卡点
- 下一篇: java监控rabbitMq服务状态,s