自己无聊脑袋短路想了一个排序算法。。

当时是写排序算法,写到shell算法,突然脑袋短路想到了这个思路 然后就试着写了下,

思路大体如下:

一列数列 例如:1,5,2,6,7,4,3

先看第一个数,1 它的前面没有比它大的数,后面没有比它小的数,若以它的位置就是这样

再看第二个数,5 它的前面没有比它大的数,后面有2,4,3三个数比它小,那他的位置是不是

应该向后移动3个单位。就是这样1, , , ,5, ,

以此来看是不是就可以把数字的顺序就记录下来了,然而并不能直接在原来的数列中修改,

因为判断一个数之后需要原有的数列继续确定下一个数,所以说我在这个算法里面又定义了一

个数组,来保存记录下来的已经判断过后的数字顺序,这个算法是半个月之前写的一直没有在看

,因为有人让我分享一些自己看的东西,就想到了这个,整理整理也没考虑时 空复杂度,就这么             写了点东西,我也不知道之前这个算法有没有什么名字,好了不多哔哔代码如下:

public static void sopln(Object obj)

{

System.out.println(obj.toString());

}

public static int[] show()

{

Scanner scan = new Scanner(System.in);

String[] str = scan.next().split(",");

int[] in = new int[str.length];

for(int i = 0; i<str.length; i++)

{

if(str[i] !=null)

{

in[i] = Integer.parseInt(str[i]);

}

else

in[i] = -1;

}

if(scan.nextLine().equals("over"))

scan.close();

return in;

}

public static boolean less(int a ,int b)

{

return a<b;

}

public static void exch(int[] in, int a, int b)

{

if(!((a<0||a>in.length-1)&&(b<0||b>in.length-1)))

{

int temp = in[a];

in[a] = in[b];

in[b] = temp;

}

sopln("交换错误!!");

}

public static boolean isSort(int[] in)

{

for(int i = 0;i<in.length-1;i++)

{

if(less(in[i+1],in[i]))

return false;

}

return true;

}

public static int[] mySortDemo(int[] in)

{

int[] ot = new int[in.length];

for(int x = 0; x <in.length;x++)

{

int min = 0;

int max = 0;

for(int y = 0;y < x; y++)

if(in[x]<in[y])

max++;

for(int y = x+1;y <in.length;y++)

if(in[x]>in[y])

min++;

ot[x-max+min] = in[x];

}

return ot;

}

时间: 2024-10-10 08:19:02

自己无聊脑袋短路想了一个排序算法。。的相关文章

在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在左边。

//在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在左边. // 例如: 当输入a = {8,4,1,6,7,4,9,6,4}, // a = {1,7,9,8,4,6,4,6,4}为一种满足条件的排序结果 using System; namespace SuanFa { class Program { //在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在左边. static void Main(string[] args) { int[]

写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的 基础知识)

//冒泡排序(数组排序) function bubble_sort($array) { $count = count($array); if ($count <= 0) return false; for($i=0; $i<$count; $i++){ for($j=$count-1; $j>$i; $j--){ if ($array[$j] < $array[$j-1]){ $tmp = $array[$j]; $array[$j] = $array[$j-1]; $array[

一个排序算法的解析

int[] source = { 8, 9, 10, 7, 6, 10, 20, 5, 21 }; public static void sort(int[] list) { for (int i = 1; i < list.length; i++) { int baseNumber = list[i]; System.out.print("i="+i+",baseNumber="+baseNumber+".Result:"); int j

12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用

出处:http://blog.csdn.net/han_xiaoyang/article/details/12163251. 声明:版权所有,转载请注明出处,谢谢. 0.前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综

13种排序算法详解

0.前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综合发散而来.比如说作为最基本的排序算法就种类很多,而事实上笔试面试过程中发现掌握的程度很一般,有很多题目,包括很多算法难题,其母题或者基本思想就是基于这些经典算法的,

排序算法比较及其应用

一.将各种数据排序 只要实现了Comparable接口的数据类型就可以被排序. 但要使算法能够灵活地用不同字段进行排序,则是后续需要考虑的问题. 1.指针排序 在Java中,指针操作是隐式的,排序算法操作的总是数据引用,而不是数据本身. 2.键不可变 如果在排序后,用例还可以改变键值,那么数组很可能就不是有序的了.类似,优先队列也会乱套. Java中,可以用不可变数据类型作为键来避免这个问题,如String,Integer,Double和File都是不可变的. 3.廉价交换 使用引用的另一个好处

STL笔记(6)标准库:标准库中的排序算法

STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew Austern http://www.cuj.com/experts/1908/austern.htm?topic=experts 用泛型算法进行排序    C++标准24章有一个小节叫“Sorting and related operations”.它包含了很多对已序区间进行的操作,和三个排序用泛型

十种常见的排序算法,面试算法必考

1.冒泡排序 已知一组无序数据a[1].a[2].……a[n],需将其按升序排列.首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变.再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变.再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值.这样处理一轮后,a[n]的值一定是这组数据中最大的.再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的.再对a[1]~a[n-2]以相同方

七种常见经典排序算法总结(C++)

最近想复习下C++,很久没怎么用了,毕业时的一些经典排序算法也忘差不多了,所以刚好一起再学习一遍. 除了冒泡.插入.选择这几个复杂度O(n^2)的基本排序算法,希尔.归并.快速.堆排序,多多少少还有些晦涩难懂,幸好又博客园大神dreamcatcher-cx都总结成了图解,一步步很详细,十分感谢. 而且就时间复杂度来说,这几种算法到底有什么区别呢,刚好做了下测试. 代码参考: http://yansu.org/2015/09/07/sort-algorithms.html //: basic_so