void problem024(char arr[], int size, int max) { char tmp_arr[size], swap; int i, k, j, tmpLen, num = 1; k = find_k(arr, size); while (k != -1) { if (num == max) { break; } i = find_i(arr, k, size); swap = arr[i]; arr[i] = arr[k]; arr[k] = swap; tmpLen = size - k - 1; memcpy(tmp_arr, arr + (k + 1), tmpLen); // reverse for (j=0; j < tmpLen / 2; j++) { swap = tmp_arr[j]; tmp_arr[j] = tmp_arr[tmpLen - j - 1]; tmp_arr[tmpLen - j - 1] = swap; } memcpy(arr + (k + 1), tmp_arr, tmpLen); k = find_k(arr, size); num++; } //return arr; }
int main (void) { int sum; printf("find_k(19)=%d\n\n",find_k(19)); printf("find_k(25)=%d\n\n",find_k(25)); printf("find_k(70)=%d\n\n",find_k(70)); system("pause"); return 0; }
int find_k(vector<int> &nums, int begin, int end, int k){ if( k<=0 || begin>end-1){ return -1; } int position = partition(nums, begin, end); int left_length = position-begin; if(left_length== k-1){ return nums[position]; } else if(left_length > k-1){ return find_k(nums, begin, position, k); } else{ return find_k(nums, position+1, end, k-left_length-1); } }
void find_k(int *array, int start, int end, int k) //由上面的快速排序来改造 { int i, j; if (start > end) return; j = start - 1; for (i = start; i < end; i++) { if (array[i] < array[end]) { swap(&array[++j], &array[i]); } } swap(&array[++j], &array[end]); if (j == k-1) return; else if (j > k-1) find_k(array, start, j-1, k); else find_k(array, j+1, end, k-j-1); }
/*-------------------------------------------------------------------------*/ void main () { clrscr(); k=find_k(); printf("koren yravneniya : %f\n",k); getch(); printf("Strelba:\n"); strelba(); getch(); graphik(); clrscr(); findq(); getch(); printrez(); }
double sphere_equation(t_ray *ray, t_obj *obj) { int i; double values[4]; i = 0; init_tab(values, 0, 4); while (i < 3) { values[0] += ray->v[i] * ray->v[i]; values[1] += ray->v[i] * ray->eye[i]; values[2] += ray->eye[i] * ray->eye[i]; ++i; } values[1] *= 2; values[2] -= (obj->rayon * obj->rayon); values[3] = (values[1] * values[1]) - (4 * values[0] * values[2]); return (find_k(values[3], values[0], values[1])); }
int main() { //freopen("/home/lintingbin/test.txt", "r", stdin); int i, n, k; while (scanf("%d%d", &n, &k) != EOF) { for (i = 0; i < n; i++) scanf("%d", &input[i]); find_k(input, 0, n-1, k+1); quick_sort(input, 0, k-1); for (i = 0; i < k - 1; i++) printf("%d ", input[i]); if (k > 0) printf("%d", input[k-1]); printf("\n"); } return 0; }
int main(int argc, char const *argv[]) { int iterations = 0; scanf("%d",&iterations); int menus[] = {1,2,4,8,16,32,64,128,256,512,1024,2048}; int count = 0; int num = 0; int k = 0; for (int i=0; i<iterations; ++i) { count = 0; scanf("%d",&num); for (int j=0; j<12; ++j) { if (menus[j]==num) { count = 1; } } if (count!=0) { printf("%d\n",count); continue; } while (num!=0) { k = find_k(num,menus); num -= k; count++; } printf("%d\n",count); } return 0; }
value_type Stokhos::Sparse3Tensor<ordinal_type, value_type>:: getValue(ordinal_type i, ordinal_type j, ordinal_type k) const { #ifdef STOKHOS_DEBUG TEUCHOS_TEST_FOR_EXCEPTION(fill_completed == false, std::logic_error, "You must call fillComplete() before calling getValue()!"); #endif k_iterator k_it = find_k(k); if (k_it == k_end()) return value_type(0); kj_iterator j_it = find_j(k_it, j); if (j_it == j_end(k_it)) return value_type(0); kji_iterator i_it = find_i(j_it, i); if (i_it == i_end(j_it)) return value_type(0); return i_it.value(); }
int findKthLargest(vector<int> &nums, int k) { return find_k(nums, 0, nums.size(), k); }
int main(int argc, char *argv[]) { int i, j, l; int **matrix; // N x N matrix Node *lpart, *rpart; // left and right partition int p, r, c; int k = 0, k_temp; float res; int res1; int *consistency; struct timeval tv1,tv2; struct timezone tzone; long elapsed_utime; /* elapsed time in microseconds */ long elapsed_mtime; /* elapsed time in milliseconds */ long elapsed_seconds; /* diff between seconds counter */ long elapsed_useconds; /* diff between microseconds counter */ if( argc != 4 ) /* checks the inputs from the command line */ { printf("Invalid input!! Please try again.\n"); return 0; } N = atoi(argv[1]); // get N (NxN partially-defective crossbar) P = atoi(argv[2]); // get P (defect rate) T = atoi(argv[3]); // get number of samples matrix = (int **)malloc(N*sizeof(int*)); for(i = 0; i < N; i++) matrix[i]=(int *)calloc(N, sizeof(int)); // all values are set to zero lpart = (Node *)malloc(N*sizeof(Node)); rpart = (Node *)malloc(N*sizeof(Node)); consistency = (int *)calloc(N+1, sizeof(int)); srand( time(NULL) ); p = faults(); gettimeofday(&tv1, NULL); for(l = 0; l < T; l++) { for(i = 0; i < N; i++) { for(j = 0; j < N; j++) matrix[i][j] = 0; } /* random faults */ for(i = 0; i < p; i++) { r = rand()%N; c = rand()%N; if(matrix[r][c] == 0) matrix[r][c] = 1; else i--; } construct_partitions(lpart, rpart, matrix); k_temp = find_k(lpart, rpart, matrix, N, N); consistency[k_temp]++; k += k_temp; } gettimeofday(&tv2, &tzone); elapsed_seconds = tv2.tv_sec - tv1.tv_sec; elapsed_useconds = tv2.tv_usec - tv1.tv_usec; //printf("Elapsed time = %f seconds + %f microseconds\n", // (double)elapsed_seconds/(double)T, (double)elapsed_useconds/(double)T); elapsed_utime = (elapsed_seconds) * 1000000 + elapsed_useconds; //lapsed_mtime = ((elapsed_seconds) * 1000 + elapsed_useconds/1000.0) + 0.5; printf("%f ",(double)elapsed_utime/(double)T); //printf("Elapsed time = %f microseconds\n", (double)elapsed_utime/(double)T); //printf("Elapsed time = %f milliseconds\n", (double)elapsed_mtime/(double)T); res = (float)k/(float)T; res1 = (int)res; if((res - (float)res1 >= 0.5)) res1++; //printf("K = %d (%.2f %%), #crosspoints = %d (%.2f %%)\n", res1, (double)res1*100/(double)N, res1*res1, (double)(res1*res1*100)/(double)(N*N) ); printf("%d",res1); for(i = 0; i < N; i++) if(consistency[i]) printf(" %d %d",i, consistency[i]); free(consistency); free(lpart); free(rpart); for(i = 0; i < N; i++) free(matrix[i]); free(matrix); //system("PAUSE"); return 0; }